1、使用'print' 語句
這是一個基本的偵錯問題的方法。我們在程式中懷疑的地方插入print語句來了解程式的運行流程控制流程和變數值的改變。
它的缺點是需要進行程式編輯,加入'print'語句,必須重新編譯,重新執行以獲得輸出。若需要調試的程式比較大,這將是耗時費力的方法。
2、使用查詢
在某些情況下,我們需要弄清楚在一個運行在內核中的進程的狀態和記憶體映射。為了獲得這些信息,我們不需要在核心中插入任何程式碼。相反,可以用 /proc
檔案系統。在/proc的偽檔案系統,保留系統啟動運行就收集的運行資訊 (cpu資訊, 記憶體容量等)。
ls -l /proc
的輸出結果,透過對系統中運行的每一個進程在/proc檔案系統中有一個以進程id命名的項。每個進程的細節資訊可以在進程id對應的目錄下的檔案中取得。也可以'ls /proc/pid
'的輸出。
免費影片教學推薦:linux影片教學
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教學
#以上是linux中程式偵錯的方法有哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!