GDB使用簡單總結

簡單總結常用gdb調試命令

不長篇討論gdb是什麼,或者怎麼使用了,因爲網上很多都講的比較詳細,以下只是做個備錄,經常使用的命令,偶爾不用容易忘記!

1.set args xxxx  (xxx爲參數)
2.r  (run   運行程序)
3.n (next   是在單步執行時,在函數內遇到子函數時不會進入子函數內單步執行,而是將子函數整個執行完再停止,也就是把子函數整個作爲一步
4.s  (step  同樣是單步執行,但是遇到子函數就進入並且繼續單步執行)
5.finish (當s進入某個函數調試,finish就是結束該函數,繼續調試)
5.b (break  point打斷點,如:b  main   即在main主函數打了一個斷點)
6.d  (delete 刪除某個斷點,如:d 1 刪除第一個斷點或者delete 1意思一樣)
7.p (print    打印,如:p  a  即打印a的值,前面可以加上如/x  、/u、/f、等,  =>  p  /x  a即打印的是16進制等等)
8.p &a  (打印a的地址)  
9.c  (continue) 執行到下一個斷點或程序結束 
10.info threads 查看當前線程調試信息
11.bt  (backtrace)  查看所有調用棧信息
12.info breakpoints 查看斷點處信息(info 查看信息 info 查看幫助可以看到還有很多命令)
13. i locals  顯示所有當前調用棧的所有變量
14.x (examine  檢查,如x/3uh  0x58090A9C,就是打印地址 0x58090A9C,3個單位雙字節無符號數,3代表3個單位,u代表無符號數,h代表以雙字節爲一個單位)  檢查某一個地址附近內容
15.disassemble  查看當前函數彙編信息(如:disassemble /rm    /m指示顯示彙編指令的同時,顯示相應的程序源碼;/r指示顯示十六進制的計算機指令(raw instruction))
設置core環境

ulimit -a 查看默認參數

ulimit -c 查看core dump文件是否打開,如果顯示爲0,則沒有打開,顯示爲unlimited,則代表core dump 文件打開了
ulimit -c 1024  設置core文件大小爲1024

ulimit -c unlimited  打開系統開關,讓其可以在程序crash的時候生成core文件。多線程如果dump,多爲段錯誤,一般都涉及內存非法讀寫。

ulimit -c 0 關閉core dump系統開關

假設生成core dump文件爲core.11493,調試直接爲gdb + 進程名+ core.11493,其它和gdb調試步驟一樣


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章