c c Linux下程式設計除錯

2021-08-27 05:54:44 字數 1140 閱讀 5119

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 跟蹤檢視某個變數,每次停下來...