遠風工作室
C++博客
|
首頁
|
發新隨筆
|
發新文章
|
聯系
|
聚合
|
管理
隨筆:92 文章:0 評論:72 引用:0
gdb調試相關指令
第一步,編譯生成帶源代碼調試符號的可執行文件:
gcc –o hello –g hello.c
其中-g的意思是生成帶源代碼調試符號的可執行文件hello,不使用-g進行編譯的可執行文件也可以使用gdb調試,但是缺少部分調試信息(如行號、函數名等)。調試信息包括用戶程序里的每個變量的類型和在可執行文件里的地址映射以及源代碼的行號。
第二,使用gdb hello進入gdb,進行調試階段。啟動gdb有以下幾種方式:
gdb filename //指定要調試的程序
gdb filename core //指定要調試的程序及其coredump文件
gdb filename pid //指定要調試的程序及對應進程id號
可以使用命令行參數更加詳細地控制gdb的行為:
-silent //不顯示進入gdb開頭的提示信息
-help(h) //命令行輔助信息
-se file //從file中讀取符號,并作為可執行文件
-core(c) file //指定core dump文件file
-c id //連接到進程號為id,與attach命令相似
-x file //file中存放一系列的gdb命令,執行file中的gdb命令
-symbols(s) //從file中讀取符號,但不作為可執行文件
-directory(d) path //指定路徑path,將path加入到搜索源文件的路徑中
注意:gdb開始運行時,它把任何一個不帶選項前綴的參數都當作一個可執行文件或core文件或進程號,具體為:把第一個前面沒有選項說明的參數看作加了-se選項,而第二個看作是跟著-c選項后面。在gdb中可以把選項名掐頭去尾,只要保證gdb能唯一判斷是哪個選項就行。
第三,逐步調試,部分命令如下:
break(b)
[
file:
]
func / line / addr / +num / -num //某函數、某行或者某內存地址處設斷點,可同時設置多個斷點
break args if COND //COND非零時在args處中斷
tbreak agrs //斷點只有效一次
clear
[
file:
]
func / line / addr / +num / -num //清楚某種斷點,可同時清除多個
delete(d) breaknum //使用斷點號來清除斷點或觀察點,沒有參數則清除所有斷點
disable(dis) breaknum //禁止……
enable
[
once
]
breaknum //啟用或者僅啟用一次……
--------------------------------
watch expr //expr值改變時停止程序,用于捕獲錯誤很有效
run(r) arg //從頭開始運行程序,并以arg作為參數(可多個)
continue(c) //繼續被中斷的程序,不能用作程序的運行啟動
step(s) //單步進入,跟蹤到函數內
next(n) //單步,不進入函數內
list(l) //顯示源代碼(正在執行區域附件10行)
backtrace(bt) / where(w) //顯示函數棧的內容
print(p) expr //查看變量或者表達式的值
display expr //每次中斷時,顯示expr的值
undisplay
[
expr
]
//取消display,沒有參數的話則取消全部
whatis expr //顯示expr的資料形態,例如變量類型等
------------------------------
set width
70
//設置屏幕列數
quit(q) //終止退出
kill(k) //終止正在調試的程序,但不退出調試,可重來
file //裝入想要調試的可執行文件
shell command //在gdb中直接運行shell命令且不需要退出gdb
help command //command命令說明
complete arg //列出所有arg開頭的命令
Esc + Shift + ? //查看所有命令的列表
------------------------------
attach pidat pid //接上一個執行的進程pid,這會使pid暫停,中斷任何sleep以及可中斷的系統調用
detach pid //解除目前接上的進程pid
jump address //跳到指定的內存位置,并開始執行
make filename //不退出gdb就能重新產生可執行文件
注意:
(1)有的命令后面可以跟參數,例如step接受一個參數表示單步執行多少步;有的命令不接受任何參數。
(2)空行表示重復上一個命令;有的命令不可重復,例如run;還有一些重復后會產生嚴重后果,建議不使用空行重復。
(3)可以使用gdb的info(i)和show命令來查詢程序狀態,每個命令可以查詢一系列的狀態,具體如下:
info:
info breakpoints //查看斷點情況
info args //查看程序參數
info display //查看所有display
info stack //查看函數棧內容,與backtrace相同
info watchpoints //查看觀察點
show:
show version //顯示gdb版本號
show copying //顯示版權信息
set:
set命令用來為程序設置運行環境,比如可以用set prompt $ 來把gdb提示符設置為$。使用set命令可以改變絕大多數show顯示的信息。
第四,調試完成后,可以使用strip命令刪除那些帶有-g選項的C編譯程序所生成的信息,釋放一些磁盤空間。
strip命令減少XCOFF對象文件的大小,strip命令從XCOFF對象文件中有選擇地除去行號信息、重定位信息、調試段、注釋段、文件頭以及所有或部分符號表。一旦使用該命令,則很難調試文件的符號,因此通常只在已經調試和測試過的生成模塊上使用strip命令。
/usr/binstrip [選項] file
strip的具體選項信息在這里不作總結。
發表于 2009-12-23 16:10
遠風
閱讀(1136)
評論(0)
編輯
收藏
引用
所屬分類:
Linux編程
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
相關文章:
Shell腳本基本內容
進程在前臺與后臺之間切換
Linux串口編程
tar命令的C參數
庫文檔的開發與使用
makefile和make規則
Linux通配符
gcc編譯器使用簡明指南
重定向與管道
vi常用指令
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
<
2025年7月
>
日
一
二
三
四
五
六
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
9
留言簿
(3)
給我留言
查看公開留言
查看私人留言
隨筆分類
(93)
ACM(5)
(rss)
C/C++基礎(20)
(rss)
Linux編程(16)
(rss)
MFC(7)
(rss)
MySQL(2)
(rss)
OPNET仿真(11)
(rss)
PHP(13)
(rss)
Python(3)
(rss)
STL(4)
(rss)
Web技術(2)
(rss)
Windows管理(3)
(rss)
數據結構 / 算法(7)
(rss)
收藏夾
(2)
C/C++基礎(1)
(rss)
數據結構 / 算法(1)
(rss)
搜索
積分與排名
積分 - 331043
排名 - 73
最新評論
1.?re: makefile和make規則
可以評論么
--馮智浩
2.?re: PHP調用外部程序的方法
大的as打算阿達的
--碩大的
3.?re: LIB和DLL的區別與使用
太贊,收藏一下,謝謝
--mymimi1988
4.?re: LIB和DLL的區別與使用
好文,好內容;
--wsdxyz
5.?re: LIB和DLL的區別與使用
寫的非常詳細,感謝。
--Forward
6.?re: LIB和DLL的區別與使用
非常好,說得很詳細,也很明白,學習了!
--xihuwuyu
7.?re: LIB和DLL的區別與使用
感覺很好,對于才接觸dll的我來說很夠用。。
--Chosan
8.?re: VC中ListCtrl經驗總結【轉載】[未登錄]
總結的很好啊,轉了
--king
9.?re: LIB和DLL的區別與使用
就我自己沒看太懂嗎
--AzzStyle
10.?re: LIB和DLL的區別與使用
通俗易懂,呵
--我的
閱讀排行榜
1.?LIB和DLL的區別與使用(76575)
2.?虛擬機VMware tools安裝【轉載】(36589)
3.?Linux串口編程(24898)
4.?tar命令的C參數(18911)
5.?判斷素數的算法(11436)
6.?VC中ListCtrl經驗總結【轉載】(11324)
7.?PHP調用外部程序的方法(11103)
8.?makefile和make規則(9219)
9.?C++進階必讀書籍【轉載】(8440)
10.?insert時出現主鍵沖突的處理方法【轉載】(8256)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 遠風
国产99久久久国产精品小说
|
亚洲国产精品无码成人片久久
|
久久精品天天中文字幕人妻
|
性高湖久久久久久久久AAAAA
|
大香网伊人久久综合网2020
|
久久精品国产精品亚洲下载
|
无码任你躁久久久久久老妇App
|
午夜人妻久久久久久久久
|
精品亚洲综合久久中文字幕
|
国产亚洲综合久久系列
|
人妻久久久一区二区三区
|
亚洲精品午夜国产va久久
|
久久婷婷色综合一区二区
|
97精品国产97久久久久久免费
|
国产亚洲欧美精品久久久
|
人人狠狠综合久久亚洲高清
|
久久婷婷激情综合色综合俺也去
|
久久久久国色AV免费观看
|
9久久9久久精品
|
人人狠狠综合久久亚洲88
|
99国内精品久久久久久久
|
精品久久久无码21p发布
|
伊人久久综合成人网
|
欧美日韩精品久久免费
|
超级碰久久免费公开视频
|
精品久久久无码人妻中文字幕豆芽
|
久久91精品国产91
|
香蕉久久夜色精品国产尤物
|
久久综合欧美成人
|
中文字幕无码久久精品青草
|
久久香蕉国产线看观看乱码
|
久久丫精品国产亚洲av不卡
|
日本亚洲色大成网站WWW久久
|
久久香蕉国产线看观看乱码
|
欧美亚洲国产精品久久蜜芽
|
精品久久久久久中文字幕人妻最新
|
伊人久久大香线蕉AV色婷婷色
|
久久伊人五月丁香狠狠色
|
久久久一本精品99久久精品88
|
国产精品一区二区久久精品涩爱
|
亚洲精品国产综合久久一线
|