1、使用'print' 語句
10年積累的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有雙塔免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
這是一個基本的調(diào)試問題的方法。 我們在程序中懷疑的地方插入print語句來了解程序的運(yùn)行流程控制流和變量值的改變。
它的缺點(diǎn)是需要進(jìn)行程序編輯,添加'print'語句,必須重新編譯,重新運(yùn)行來獲得輸出。若需要調(diào)試的程序比較大,這將是一個耗時費(fèi)力的方法。
2、使用查詢
在某些情況下,我們需要弄清楚在一個運(yùn)行在內(nèi)核中的進(jìn)程的狀態(tài)和內(nèi)存映射。為了獲得這些信息,我們不需要在內(nèi)核中插入任何代碼。 相反,可以用 /proc
文件系統(tǒng)。在/proc的偽文件系統(tǒng),保留系統(tǒng)啟動運(yùn)行就收集的運(yùn)行信息 (cpu信息, 內(nèi)存容量等)。
ls -l /proc
的輸出結(jié)果,通過對系統(tǒng)中運(yùn)行的每一個進(jìn)程在/proc文件系統(tǒng)中有一個以進(jìn)程id命名的項。每個進(jìn)程的細(xì)節(jié)信息可以在進(jìn)程id對應(yīng)的目錄下的文件中獲得。也可以'ls /proc/pid
'的輸出。
3、使用跟蹤
strace的和ltrace是兩個在Linux中用來追蹤程序的執(zhí)行細(xì)節(jié)的跟蹤工具。
strace:
strace攔截和記錄系統(tǒng)調(diào)用及其接收的信號。對于用戶,它顯示了系統(tǒng)調(diào)用、傳遞給它們的參數(shù)和返回值。strace可以附著到已在運(yùn)行的進(jìn)程或一個新的進(jìn)程。它作為一個針對開發(fā)者和系統(tǒng)管理員的診斷、調(diào)試工具是很有用的。
它也可以用來當(dāng)做一個通過跟蹤不同的程序調(diào)用來了解系統(tǒng)的工具。這個工具的好處是不需要源代碼,程序也不需要重新編譯。
使用strace的基本語法是:
strace 命令
strace的輸出非常長,我們通常不會對顯示的每一行都感興趣。我們可以用'-e expr
'選項來過濾不想要的數(shù)據(jù)。
用 '-p pid
' 選項來綁到運(yùn)行中的進(jìn)程。
用'-o
'選項,命令的輸出可以被重定向到文件。
strace過濾成只有系統(tǒng)調(diào)用的輸出。
ltrace:
ltrace跟蹤和記錄一個進(jìn)程的動態(tài)(運(yùn)行時)庫的調(diào)用及其收到的信號。它也可以跟蹤一個進(jìn)程所作的系統(tǒng)調(diào)用。它的用法是類似與strace。
ltrace command
'-i
' 選項在調(diào)用庫時打印指令指針。
'-S
' 選項被用來現(xiàn)實系統(tǒng)調(diào)用和庫調(diào)用.
trace捕捉'STRCMP'庫調(diào)用的輸出。
以上就是linux中程序調(diào)試的方法有哪些的詳細(xì)內(nèi)容,更多請關(guān)注創(chuàng)新互聯(lián)其它相關(guān)文章!