strace -o filename 將結果輸出到檔案filename中。
strace -t 將每個系統呼叫所花費的時間列印出來。結果體現在 <> 內。
strace -p pid 額外追蹤現有的程序。其中,pid指的是程序id。
特點:
- 可以隨心所欲的執行程式;
- 可以在斷點除錯;
- 在斷點處,可以檢視程式執行的狀態;
- 可以改變程式的執行環境。
要使用gdb除錯的前提是,必須使用g++ -g引數。
l #list 從第一行開始列出原始碼
enter鍵 #表示重複上一次命令
b 15
#設定在原始碼 15 行處設定斷點
b func #表示設定斷點在函式func入口處
info
break
#表示檢視斷點的資訊
r #表示執行程式 = run
n #表示單句執行 相當於ide的f11
p i #列印遍歷i p = print
p arr[i]#列印遍歷 arr[i]
bt #檢視函式堆疊
finish #跳出當前函式
q #結束除錯
coredump 核心轉儲錯誤,往往是程式執行時崩潰的錯誤,產生原因有
- 記憶體訪問越界
- 多執行緒使用了執行緒不安全的函式
- 多執行緒讀寫的資料未加鎖保護
- 非法指標,例如,int b =1; int *a; *a=b;
- 堆疊溢位
coredump檔案儲存的位置可通過命令:
cat /proc/sys/kernel/core_pattern檢視
修改檔案路徑:
echo "...檔案路徑" > /proc/sys/kernel/core_pattern
比較重要的命令
記憶體分布 (低位址 –> 高位址)
注:static宣告的變數當做全域性變數處理
使用valgrind開源工具的memcheck可以檢查記憶體洩露。
詳細參考:[1]徐曉鑫 後台開發核心技術與應用實戰 .
C 程式設計除錯
c 程式設計師有時會用到一種類似於標頭檔案保護的技術,以便有選擇地執行除錯 基本思想是,程式可以包含一些用於除錯的 但是這些 只在開發程式時使用。當應用程式編寫完成準備發布時,要先遮蔽掉除錯 這種方式用到兩項預處理功能 assert和ndebug。assert 是一種預處理巨集 preprocess...
linux下gcc程式設計02 gdb除錯工具使用
一。gdb除錯工具簡介 gdb gnu debugger 是gcc的除錯工具。其功能強大,現描述如下 gdb主要幫忙你完成下面四個方面的功能 1.啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。2.可讓被除錯的程式在你所指定的調置的斷點處停住。斷點可以是條件表示式 3.當程式被停住時,可以...
Linux c 程式設計 GDB除錯
gcc g o 編譯後的檔名 需要編譯的c檔案 如 gcc g o test test.c命令 命令縮寫 命令說明 list l顯示多行源 break b設定斷點,程式執行到斷點的位置會停下來 info i描述程式的狀態 runr 開始執行程式 display disp 跟蹤檢視某個變數,每次停下來...