Debug Hacks學習筆記 1

2021-08-17 14:34:48 字數 660 閱讀 8221

+ 大多數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...