国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

gdb調(diào)試常用實用命令和core dump文件的生成

2019-11-08 20:24:48
字體:
供稿:網(wǎng)友

1、生成core dump文件的方法:

  $  ulimit -c //查看是否為0

    如果為0

 $   ulimit -c unlimited

    這樣在程序崩潰以后會在當(dāng)前目錄生成一個core.xxxx的文件

 

2、調(diào)試core dump文件

    生成了core.xxx文件以后

  $  gdb ./應(yīng)用程序  core.xxxx

  就會恢復(fù)現(xiàn)場到你的程序崩潰的那一刻

 (gdb)bt          //這個命令會列出程序崩潰時的堆棧信息,一層一層會有標號  #0  #1  #2 .......

  如果你要查看某一層的信息,你需要在切換當(dāng)前的棧,一般來說,程序停止時,最頂層的棧就是當(dāng)前棧,如果你要查看棧下面層的詳細信息,首先要做的是切換到你想看的棧

(gdb)f  N    //N是你想要切換的棧的標號,達到后可以用  ‘p  變量’  查看變量的值,以查找異常出現(xiàn)的原因

 

     info args        打印出當(dāng)前函數(shù)的參數(shù)名及其值。         info locals        打印出當(dāng)前函數(shù)中所有局部變量及其值。            info catch        打印出當(dāng)前的函數(shù)中的異常處理信息。

 

3、gdb調(diào)試命令

 

 l  列出此刻運行到代碼行的函數(shù)的上下文代碼

 b  設(shè)置斷點

 r  開始運行程序

 s  單步調(diào)試,進入函數(shù)

 n  單步,不進入下一層函數(shù)

 n  k(一個數(shù)字) 這樣是相當(dāng)于輸入了k次n,也就是走了k步

 c  繼續(xù)運行程序(一般是跑到斷點后,跟了幾步,輸入c繼續(xù)往下一個斷點跑)

[enter]  回車鍵默認執(zhí)行上一次的命令

finish     執(zhí)行完當(dāng)前函數(shù)返回到調(diào)用他的函數(shù),例如單步執(zhí)行如果進入到了某函數(shù),但你又想退出該函數(shù)

u(until) 制定程序直到退出當(dāng)前的循環(huán)體,輸入u自動執(zhí)行完全部的循環(huán)

break 34 if  var=12     //設(shè)置條件斷點,當(dāng)var等于12的時候就在34行設(shè)置斷點watch i != 10      //監(jiān)控某一個條件,然后設(shè)置斷點,如果i不等于10的時候,就設(shè)置斷點

break  func      //為某一個函數(shù)設(shè)置斷點

break  filename:N      //在某一個文件的第N行設(shè)置斷點

info breakpoints         顯示所有的斷點的信息

delete N          //刪除標號為N的斷點

delete        刪除所有的斷點

clear  N    //清楚N上面的所有的斷點

p    var     打印變量var的值

//打印字符串的時候,有長度限制,想打印完整的長字符串,通過命令set PRint element 0就可以了

p   /x var     以16進制顯示var的值

                   x 16進制

                   d 10進制

                   t   二進制

                   c   按字符格式顯示變量

                   f    按浮點數(shù)

print *a@10         //如果a是一個數(shù)組,這樣顯示數(shù)據(jù)的10個元素的值

print   var=10       //修改運行時變量的值

whatis  var          //顯示一個變量的類型

ptype var           //更詳細的方式顯示變量var的類型,會打印出var的結(jié)構(gòu)定義

 

4、編譯的時候要加入-g選項,才可以對程序進行跟蹤

 

5、gdb調(diào)試程序的時候打印變量值會出現(xiàn)<value optimized out> 情況,可以在gcc編譯的時候加上 -O0參數(shù)項,意思是不進行編譯優(yōu)化,調(diào)試的時候就會順暢了,運行流程不會跳來跳去的,發(fā)布項目的時候記得不要在使用 -O0參數(shù)項,gcc 默認編譯或加上-O2優(yōu)化編譯會提高程序運行速度


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 漳浦县| 阿荣旗| 葵青区| 海安县| 呼伦贝尔市| 收藏| 利辛县| 郧西县| 兴化市| 阳新县| 鹤峰县| 梧州市| 雅安市| 崇阳县| 全南县| 龙井市| 乌拉特前旗| 古浪县| 祁东县| 根河市| 潞西市| 栖霞市| 类乌齐县| 华池县| 黑河市| 衡阳市| 双流县| 阜康市| 航空| 永川市| 乃东县| 新泰市| 加查县| 姜堰市| 镶黄旗| 墨竹工卡县| 华蓥市| 大方县| 镇江市| 古交市| 太仆寺旗|