linux怎么調(diào)試?
1、使用'print' 語(yǔ)句
這是一個(gè)基本的調(diào)試問(wèn)題的方法。 我們?cè)诔绦蛑袘岩傻牡胤讲迦雙rint語(yǔ)句來(lái)了解程序的運(yùn)行流程控制流和變量值的改變。
它的缺點(diǎn)是需要進(jìn)行程序編輯,添加'print'語(yǔ)句,必須重新編譯,重新運(yùn)行來(lái)獲得輸出。若需要調(diào)試的程序比較大,這將是一個(gè)耗時(shí)費(fèi)力的方法。
2、使用查詢
在某些情況下,我們需要弄清楚在一個(gè)運(yùn)行在內(nèi)核中的進(jìn)程的狀態(tài)和內(nèi)存映射。為了獲得這些信息,我們不需要在內(nèi)核中插入任何代碼。 相反,可以用 /proc文件系統(tǒng)。在/proc的偽文件系統(tǒng),保留系統(tǒng)啟動(dòng)運(yùn)行就收集的運(yùn)行信息 (cpu信息, 內(nèi)存容量等)。
ls -l /proc的輸出結(jié)果,通過(guò)對(duì)系統(tǒng)中運(yùn)行的每一個(gè)進(jìn)程在/proc文件系統(tǒng)中有一個(gè)以進(jìn)程id命名的項(xiàng)。每個(gè)進(jìn)程的細(xì)節(jié)信息可以在進(jìn)程id對(duì)應(yīng)的目錄下的文件中獲得。也可以'ls /proc/pid'的輸出。
免費(fèi)視頻教程推薦:linux視頻教程
3、使用跟蹤
strace的和ltrace是兩個(gè)在Linux中用來(lái)追蹤程序的執(zhí)行細(xì)節(jié)的跟蹤工具。
strace:
strace攔截和記錄系統(tǒng)調(diào)用及其接收的信號(hào)。對(duì)于用戶,它顯示了系統(tǒng)調(diào)用、傳遞給它們的參數(shù)和返回值。strace可以附著到已在運(yùn)行的進(jìn)程或一個(gè)新的進(jìn)程。它作為一個(gè)針對(duì)開(kāi)發(fā)者和系統(tǒng)管理員的診斷、調(diào)試工具是很有用的。
它也可以用來(lái)當(dāng)做一個(gè)通過(guò)跟蹤不同的程序調(diào)用來(lái)了解系統(tǒng)的工具。這個(gè)工具的好處是不需要源代碼,程序也不需要重新編譯。
使用strace的基本語(yǔ)法是:
strace的輸出非常長(zhǎng),我們通常不會(huì)對(duì)顯示的每一行都感興趣。我們可以用'-e expr'選項(xiàng)來(lái)過(guò)濾不想要的數(shù)據(jù)。
用 '-p pid' 選項(xiàng)來(lái)綁到運(yùn)行中的進(jìn)程。
用'-o'選項(xiàng),命令的輸出可以被重定向到文件。
strace過(guò)濾成只有系統(tǒng)調(diào)用的輸出。
ltrace:
ltrace跟蹤和記錄一個(gè)進(jìn)程的動(dòng)態(tài)(運(yùn)行時(shí))庫(kù)的調(diào)用及其收到的信號(hào)。它也可以跟蹤一個(gè)進(jìn)程所作的系統(tǒng)調(diào)用。它的用法是類似與strace。
'-i' 選項(xiàng)在調(diào)用庫(kù)時(shí)打印指令指針。
'-S' 選項(xiàng)被用來(lái)現(xiàn)實(shí)系統(tǒng)調(diào)用和庫(kù)調(diào)用.
trace捕捉'STRCMP'庫(kù)調(diào)用的輸出。
相關(guān)文章教程推薦:linux教程
以上就是linux中程序調(diào)試的方法有哪些的詳細(xì)內(nèi)容