gdb除錯手冊

2021-07-27 21:52:14 字數 950 閱讀 1275

gdb原理:利用作業系統提供的系統呼叫ptrace。詳情請看。

gdb進行除錯的程序建議編譯引數新增-g、並去掉strip(-g3可在gdb列印巨集)。

儲存與恢復斷點

設定每步都列印的內容

gdb -p `ps -ef |grep worker | grep -v grep  | awk ''`  -x ../a.txt

檔案內容

b recvfrom//設定斷點

commands

silent

watch stoidbaddr//監控變數

watch ioidbaddrlen

watch m_stempbuf

cont

endc

原因:記憶體越界、執行緒不安全函式、非法指標、堆疊溢位

檢視core檔案限制

ulimit -c

取消core檔案限制,只在本次shell的會話有效,可以在系統配置檔案中新增。

ulimit -c unlimited

檢視coredump後檔案生成的地方,如果不是絕對路徑則core檔案生成的地方是相對於程序啟動時的路徑。

cat /proc/sys/kernel/core_pattern

呼叫seteuid()/setegid()改變了程序的有效使用者或組,則在預設情況下系統不會為這些程序生成coredump。將/proc/sys/fs/suid_dumpable設定為1則仍會生成core檔案。

gdb 程序名 core檔案

bt    //即可檢視core的呼叫棧了。前提當然是-g、nostrip。

/proc/pid/coredump_filter決定過濾什麼記憶體寫到core檔案中。

GDB除錯手冊

linux 包含了乙個叫gdb 的gnu 除錯程式。gdb 是乙個用來除錯c和c 程式的強力偵錯程式。它使你能在程式執行時觀察程式的內部結構和記憶體的使用情況。以下是 gdb 所提供的一些功能 它使你能監視你程式中變數的值 它使你能設定斷點以使程式在指定的 行上停止執行 它使你能一行行的執行你的 在...

gdb除錯手記

記錄一些gdb的使用經驗 假裝現在要除錯的二進位制程式叫a.exe,原始檔叫pleasedebugme.c 直接輸入gdb a.exe或者開啟gdb之後輸入file a.exe 首先用gcc g 編譯c c 程式時一定要加上 g選項,which means 加上除錯資訊,就像gcc g please...

Shell除錯手冊

1 檢查語法 n 選項只做語法檢查,而不執行指令碼。sh n script name.sh 2 啟動除錯 sh x script name.sh 進入除錯模式後,shell依次執行讀入的語句,產生的輸出中有的帶加號,有的不帶,如下。帶加號表示該條語句是shell執行的。不帶加號表示該語句是shell...