您好,登錄后才能下訂單哦!
1、使用'print' 語句
這是一個基本的調試問題的方法。 我們在程序中懷疑的地方插入print語句來了解程序的運行流程控制流和變量值的改變。
它的缺點是需要進行程序編輯,添加'print'語句,必須重新編譯,重新運行來獲得輸出。若需要調試的程序比較大,這將是一個耗時費力的方法。
2、使用查詢
在某些情況下,我們需要弄清楚在一個運行在內核中的進程的狀態和內存映射。為了獲得這些信息,我們不需要在內核中插入任何代碼。 相反,可以用 /proc
文件系統。在/proc的偽文件系統,保留系統啟動運行就收集的運行信息 (cpu信息, 內存容量等)。
ls -l /proc
的輸出結果,通過對系統中運行的每一個進程在/proc文件系統中有一個以進程id命名的項。每個進程的細節信息可以在進程id對應的目錄下的文件中獲得。也可以'ls /proc/pid
'的輸出。
3、使用跟蹤
strace的和ltrace是兩個在Linux中用來追蹤程序的執行細節的跟蹤工具。
strace:
strace攔截和記錄系統調用及其接收的信號。對于用戶,它顯示了系統調用、傳遞給它們的參數和返回值。strace可以附著到已在運行的進程或一個新的進程。它作為一個針對開發者和系統管理員的診斷、調試工具是很有用的。
它也可以用來當做一個通過跟蹤不同的程序調用來了解系統的工具。這個工具的好處是不需要源代碼,程序也不需要重新編譯。
使用strace的基本語法是:
strace 命令
strace的輸出非常長,我們通常不會對顯示的每一行都感興趣。我們可以用'-e expr
'選項來過濾不想要的數據。
用 '-p pid
' 選項來綁到運行中的進程。
用'-o
'選項,命令的輸出可以被重定向到文件。
strace過濾成只有系統調用的輸出。
ltrace:
ltrace跟蹤和記錄一個進程的動態(運行時)庫的調用及其收到的信號。它也可以跟蹤一個進程所作的系統調用。它的用法是類似與strace。
ltrace command
'-i
' 選項在調用庫時打印指令指針。
'-S
' 選項被用來現實系統調用和庫調用.
trace捕捉'STRCMP'庫調用的輸出。
以上就是linux中程序調試的方法有哪些的詳細內容,更多請關注億速云其它相關文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。