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...