+ 大多數linux發行版關閉了記憶體轉儲功能,使用ulimit命令檢視當前的記憶體轉儲是否有效:ulimit -c,如果為0則關閉了,使用ulimit -c unlimited或者設定乙個上限可開啟核心轉儲,當發生問題時程序的記憶體就會全部轉儲到記憶體轉儲檔案core*中,可使用gdb除錯生成的核心轉儲檔案;
+ gdb的break設定斷點可以有函式名、行號、檔名:行號、檔名:函式名、+偏移量、-偏移量、*位址;run執行到main函式可以用start;顯示棧幀backtrace(bt);bt full不僅顯示棧幀,還顯示區域性變數;info reg 顯示暫存器;p /格式 變數名 顯示變數值;x /格式 位址 顯示記憶體資料;x /nfu addr;監視點 watch/awatch/rwatch 《表示式》;設定變數的值 set variable 變數 = 表示式;
+ attach pid 除錯正在執行的程序
+ continue/next/step 次數 執行指定次數的相應命令
+ disable/enable 禁用/啟用斷點
+ commands 斷點編號 命令。。。。 end
+ 通過p命令顯示過的值會記錄在內部歷史中,通過show value可以顯示歷史中的最後10個值
+ strace + 程序名 尋找故障原因的線索
《DEBUG HACKS》中文版筆記(一)
本書的讀者物件主要是用c c 等程式語言進行開發的應用程式程式設計師和linux核心開發者。所有示例都使用linux。本書內容 不僅包括對應用程式的除錯,也包括對作業系統 linux核心 的除錯。此外也會涉及gdb等偵錯程式的使用方法 轉儲檔案 dump 的檢視方法,crash的使用方法。除錯流程 ...
學習筆記1
struct test test int x void fun class test1 test1 int x void fun int main void test1 a 行1 a.fun 行2 test1 b 行3 b.fun 行4 test c 行5 c.fun 行6 test d 行7 d....
學習筆記1
1 字串原地逆序 使用臨時變數 void reverse string s 5 求平均值 避免溢位 int f int x,int y 6 楊氏矩陣 bool young int a m n int x return false 7 十進位制轉十六進製制 string decimaltohexade...