『壹』 gdb能運行時,加入斷點嗎
肯定可以,調試器就是為了調試的,肯定有斷點功能。
『貳』 gdb斷點怎麼實現的
2009年12月29日,程序調試工具 GDB 7.0.1 發布,新版本修正了7.0版本的一些嚴重的堆棧溢出bug,這些bug可能導致 GDB 調試進程中斷,修正了在 FreeBSD 和 IRⅨ 系統下無法編譯的問題,增加了對 Thumb2調試的支持,還有其他一些小bug的修復。
2010年03月19日,GDB 7.1 發布,
詳細改進內容:多程序調試的支持;
位置獨立的可執行文件(派)調試的支持;
新的目標(包括一個模擬器):Xilinx MicroBlaze和瑞薩RX;
Python支持增強;
c++支持擴展;
新tracepoint功能;
過程記錄的改進;
遠程協議擴展。
2010年09月06日 ,GDB 7.2 發布,
該版本改進記錄:
⒈ 支持D語言
⒉ C++ 改進,支持參數依賴查找ADL,靜態常量類成員和改進了用戶自定義操作符的支持
⒊ Python 調試的改進,包括斷點、符號、符號表、程序空間、線程等可通過命令行進行操作
⒋ Furthermore,enhancements were made for tracepoints and for GDBserver.在跟蹤點和GDB程序上有了改善。
⒌ 支持 ARM Symbian 平台
⒍ 其他方面的改進和bug修復。
2011年08月26日,GDB 7.3a 發布,
變化:
1。GDB可以理解線程的名字。
2。這個命令」線程名稱」(指定一個名稱)和「線程找到[REGEXP]」(匹配名稱、目標ID,或者額外的信息)被添加。
3。Python腳本支持是大大增強。
4。在c++的支持,異常處理是提高,模板參數放在范圍在一個實例化時調試。
5。線程調試的核心轉儲在GNU / linux成為可能。
6。最初支持C語言版本的OpenCL。
7。許多其他改進。
『叄』 如何在gdb上指定線程和指定參數打斷點
可以使用gdb命令,調試多線程。
在調試的過程中,
可以輸入命令:thread這是會列出多個線程的進程號。
然後你可以選擇進入哪個線程進行調試。
只要輸入:thread 線程進程號就可以了。
同單線程調試的方法沒有多大區別。
請自己查看help命令。
『肆』 在c語言中怎樣設置斷點
1、首先在C語言編程軟體中,寫上注釋內容,如下圖所示。
『伍』 linux下gdb調試設置斷點的問題
確認編譯時有-g選項,否則不能用。
如果已經有了,沒有重名的文件,直接
b xxx.c:22
或者
b 函數名
『陸』 多個源文件,gdb時如何在指定的某個文件中設置斷點
有兩種辦法, 1 利用 源文件+行號設置斷點, 2 readelf -wi test > test.wi 在test.wi總查找你想設置斷點的方法名稱,然後能夠找到這個方法對應的mangle以後的符號名稱,在GDB中,用這個符號名稱設置斷點就可以了。
『柒』 gdb調試時,斷點設置好了,可是run不起作用。。輸入next:The program is not being run.
直接輸入start命令即可進入main函數
『捌』 gdb調試設置了斷點後如何繼續往下運行程序
輸入run或r回車就能運行到設置的斷點處,輸入next或s回車單步運行
『玖』 深度linux V20如何安裝gdb,如何用gdb調試程序、用gdb設置斷點刪除斷點、gdb自動顯示變數值、看內存值
因本人通過幾個小時的時間才解決這個問題,希望我的答案能節省大部分初學者在gdb上的時間。我也是今天才接觸gdb,以下是有關深度linux V20的gdb調試問題的初步總結:
安裝gdb方式,sudo apt-get install gdb ,有ok點擊ok安裝,直到安裝結束。
gcc -g aa.c之後才能調試a.out文件。(aa.c表示你的源文件)
用法gdb a.out或者gdb進入後file a.out
l N是查看N行附近的代碼,直接l是顯示接下去的代碼。r運行過程中遇到斷點,按l則顯示斷點附近代碼。
l 函數名是查看函數名里邊的代碼
q退出調試。
p 變數,查看變數即時值。
r運行。
n單步執行。
s單步執行-進入函數。
c連續多步運行,直到下個斷點(循環的下一次斷點)暫停。
b N第N行設置斷點。
b 函數名,在函數名的入口處設置斷點。
b 文件名:行號,在指定文件名行號設置斷點。其中文件名是源文件的文件名。
(條件斷點)b 行號 if 變數==N,表示該行號的斷點必須滿足變數==N的條件下才停下來。
ignore 斷點編號 N,表示該斷點編號在接下來的運行過程中忽略N次,即第N+1次該斷點才會停下來。
info break顯示全部斷點。簡寫i b
delete 1-3刪除編號為1到3的斷點。簡寫 d 1-3。d 4隻刪除編號為4的斷點。
delete break刪除所有斷點。無法簡寫
clear 20刪除20行斷點。
運行中disable break n 禁用斷點號為n的斷點。enable break n 使能斷點為n的斷點號重新啟用。其中break可以簡寫為b
display {var1,var2,var3}自動顯示var1~3變數的值。要刪除display則用delete display N,N表示display的編號,如果不加N則表示刪除全部的display。如果要自動顯示數組內容,用display 數組名。注意:display需要r之後才能設置。
watch {var1,var2,var3}自動跟蹤改變的值,只要有改變才顯示watch。要刪除watch,用d N,N代表watch編號,用i b可以查看該編號。注意:watch需要r之後才能設置。
gdb死循環程序按鍵盤ctrl+c可結束程序
****************
要查看內存地址的內容用x /nfu 內存地址。以下是n、f、u的解釋
其中n表示要顯示多少個內存單元。
f表示顯示方式, 可取如下值
x 按十六進制格式顯示變數。
d 按十進制格式顯示變數。
u 按十進制格式顯示無符號整型。
o 按八進制格式顯示變數。
t 按二進制格式顯示變數。
a 按十六進制格式顯示變數。
i 指令地址格式
c 按字元格式顯示變數。
f 按浮點數格式顯示變數。
u表示一個地址單元的長度
b表示單位元組,
h表示雙位元組,
w表示四位元組,
g表示八位元組
*****************
『拾』 gdb 調試給函數打上斷點,需要加上參數嗎
確認編譯時有-g選項,否則不能用。 如果已經有了,沒有重名的文件,直接 b xxx.c:22 或者 b 函數名