導航:首頁 > 數據分析 > gdb怎麼設置監控指針數據

gdb怎麼設置監控指針數據

發布時間:2023-03-27 19:49:21

A. GDB常用命令

1、file
載入調試程序,同時載入符號表

2、core-file
載入core mp程序映像,
gdb命令行參數形式: (-c | -core) core-file

3、symbol-file
從指定文件載入符號表
gdb命令行參數形式: (-s | -se | -symbols) symbol-file

4、directory
添加源文件搜索路徑
gdb命令行參數形式: (-d | -directory) source-directory

5、r — run
啟動調試程序,可傳入參數

6、c — continue
跳過斷點繼續執行

7、s — step
單步執行,進入子程序內部

8、n — next
單步裂凳執行,越過肆鋒旅子程序執行

9、b — break
設置斷點,使用行號或函數名

10、i — info
顯示斷點 info breakpoints

11、d — delete
刪除斷點 delete breakpoints

12、bt — backtrace
列印棧幀

13、p — print
列印變數
/x 按十六進制格式顯示變數
/d 按十進制格式顯示變數
/u 按十六進制格式顯示無符號整型
/o 按八進制格式顯示變數
/t 按二進制格式顯示變數
/a 按十基穗六進制格式顯示變數
/c 按字元格式顯示變數
/f 按浮點數格式顯示變數

14、l — list
顯示程序源碼

15、jump
跳轉到第n行處開始調試

16、call
調用函數

17、finish
退出當前函數返回到它的調用函數

18、watch
設置觀察點,當表達式的值改變時停止運行

19、awatch
設置觀察點,當表達式的值被讀取或發生改變時停止運行

20、commands
設置當遇到斷點n時執行的特定動作命令

B. GDB如何查找指針我要在GDB里導入Python腳

(1)假設要debug的進程號為1000,運行如下命令:
$ gdb -p 1000
使用此命令即可使gdb附加到進程。
(2)載入libpython腳本
如果你的gdb是redhat或fedora等廠商修改過的,會有--python選項,使用此選項即可指定gdb啟動時載入的Python擴展腳本(此腳本是擴展gdb的,不是我們需要信拍debug的腳本)。
$ gdb --python /path/to/libpython .py -p 1000
如果安裝的是GNU的gdb,就需要打開gdb後手動載入慎純libpython.py腳本
(gdb) python
> import sys
>sys.path.insert(0, '/path/to/libpython.py' )
> import libpython
>end
(gdb)
這時就可以使用py-bt命令列印當前線程的Python traceback了。libpython還提供很多命令,例如py-print列印滑孝羨變數,py-locals列印所有本地變數等等,詳細可打開libpython.py查看。

C. gdb怎麼用

GDB調試,建議去下個系統的文檔;
GDB調試器
GCC用於編譯程顫耐序,而Linux的另一個GNU工具gdb則用於調試程序。gdb是一個用來調試C和C++程序的強力調試器,我們能通過它進行一系列調試工作,包括設置斷點、觀查變數、單步等。
其最常用的命令如下:
file:裝入想要調試的可執行文件。
kill:終止正在調試的程序。
list:列表顯示源代碼
next:執行一行源代碼但不進入函數茄大春內部。
step:執行一行源代碼而且進入函數內部。
run:執行當前被調試的程序
quit:終止gdb
watch:監視一個變數的值
break:在代碼里設置斷點,程序執行到這?鍤憊移?
make:不退出gdb而重新產生可執行文件
shell:不離開gdb而執行shell
2)從你的描述上看來,你是用單獨的gdb.exe調試器,調試的時候不需要運行程序的,編譯的時候 只要加上相應的參數(」-g「)產生編譯後的可執仿猜行文件,
以gcc編譯sum.c(加-g選項產生debug信息):
gcc –g –o sum sum.c
在命令行上鍵入gdb sum並按回車鍵就可以開始調試sum了,再運行run命令執行sum。

D. 如何用GDB進行調試

1: 對於在應用程序中加入參數進行調試的方法:
直接用 gdb app -p1 -p2 這樣進行調試是不行的。
需要像以下這樣使用:
#gdb app
(gdb) r -p1 -p2
或者在運行run命令前使用set args命令:
(gdb) set args p1 p2
可以用show args 命令來查看

2. 加入斷點:
break <linenumber>
break <funcName>
break +offset
break -offset
(在當前行號的前面或後面的offset行停住。)

break filename:linenum
在源文件filename的linenum行處停住。

break filename:function
在源文件filename的function函數的入口處停住。

break ... if
...可以是上述的參數,condition表態沖示條件,在條件成立時停住。比如在循環境體中,可以設置 break if i=100,表示當i為100時停住程序。

3. 查看運行時的堆棧:
使用bt命令

4. 列印某個變數的值:
print val

5. 單步: n
繼續運行:c
step
單步跟蹤,如果有函數調用,他會進入該函數。
next
同樣單步跟蹤,如果有函數調用,他不會進入該函數。很像VC等工具中的step over。後面可以加count也可以不加,不加表示一條條稿閉散地執行,加表示執行後面的count條指令,然後再停住。
set step-mode
set step-mode on
打開step-mode模式,於是,在進行單步跟蹤時,程序不會因為沒有debug信息而不停住。這個參數有很利於查看機器碼。
set step-mod off
關閉step-mode模式。
finish
運行程序,直到當前函數完成返回。並列印函數返回時的堆棧地址和返回值及參數值等信息。
until 或 u
當你厭倦了在一個循環體內單步跟蹤時,這個命令可以運行程序直到退出循環體。

6.在GDB中執行shell命令:
在gdb環境中,你可以執行UNIX的shell的命令,使用gdb的shell命令來完成:
eg. shell make

7. 運行環境
可設定程序的運行路徑。
show paths 查看程序的運行路徑。
set environment varname [=value] 設置環境變數。如:set env USER=hchen
show environment [varname] 查看環境變數。

8.觀察點(WatchPoint)
觀察點一般來觀察某個表達式(變數也是一種表達式)的值是否有變化了,如果有變化,馬上停住程 序。我們有下面的幾種方法來設置觀察點:
watch
為表達式(變數)expr設置一個觀察點。一量表達式值有變化時,馬上停住程序。
rwatch
當表達式(變數)expr被讀時,停住程序。
awatch
當表達式(變數)的值被讀或被寫時,停住程序。
info watchpoints
列出當前所設置了的所有觀察點。

9. 維護breakpoint
clear
清除所有的已定義的停止點。
clear func
清除所有設置在函數上的停止點。
delete [breakpoints] [range...]
刪除指定的斷點,breakpoints為斷點號。如果不指定斷點號,則表示刪除所有的斷點。range 表示斷點號的范圍(如:3-7)。其簡寫命令為d。
比刪除更好的一種方法是disable停止點,disable了的停止點,GDB不會刪除,當你還需要時,enable即可,就好像回收站一樣。
disable [breakpoints] [range...]
disable所指定的停止點,breakpoints為停止點號。如果什麼都不指定,表示disable所有的停止 點。簡寫命令是dis.
enable [breakpoints] [range...]
enable所指定的停止點,breakpoints為鍵氏停止點號。

10、程序變數
查看文件中某變數的值:
file::variable
function::variable
可以通過這種形式指定你所想查看的變數,是哪個文件中的或是哪個函數中的。例如,查看文件f2.c中的全局變數x的值:
gdb) p 'f2.c'::x

查看數組的值
有時候,你需要查看一段連續的內存空間的值。比如數組的一段,或是動態分配的數據的大小。你可以使用GDB的「@」操作符,「@」的左邊是第一個內存的地址的值,「@」的右邊則你你想查看內存的長度。例如,你的程序中有這樣的語句:
int *array = (int *) malloc (len * sizeof (int));
於是,在GDB調試過程中,你可以以如下命令顯示出這個動態數組的取值:
p *array@len
如果是靜態數組的話,可以直接用print數組名,就可以顯示數組中所有數據的內容了。

11.輸出格式
一般來說,GDB會根據變數的類型輸出變數的值。但你也可以自定義GDB的輸出的格式。例如,你想輸出一個整數的十六進制,或是二進制來查看這個整型變數的中的位的情況。要做到這樣,你可以使用GDB的數據顯示格式:

x 按十六進制格式顯示變數。
d 按十進制格式顯示變數。
u 按十六進制格式顯示無符號整型。
o 按八進制格式顯示變數。
t 按二進制格式顯示變數。
a 按十六進制格式顯示變數。
c 按字元格式顯示變數。
f 按浮點數格式顯示變數。
(gdb) p i
$21 = 101
(gdb) p/a i
$22 = 0x65
(gdb) p/c i
$23 = 101 'e'
(gdb) p/f i
$24 = 1.41531145e-43
(gdb) p/x i
$25 = 0x65
(gdb) p/t i
$26 = 1100101

11.查看內存
使用examine命令(簡寫是x)來查看內存地址中的值。x命令的語法如下所示:
x/
n、f、u是可選的參數。
n 是一個正整數,表示顯示內存的長度,也就是說從當前地址向後顯示幾個地址的內容。
f 表示顯示的格式,參見上面。如果地址所指的是字元串,那麼格式可以是s,如果地十是指令地址,那麼格式可以是i。
u 表示從當前地址往後請求的位元組數,如果不指定的話,GDB默認是4個bytes。u參數可以用下面的字元來代替,b表示單位元組,h表示雙位元組,w表示四位元組,g表示八位元組。當我們指定了位元組長度後,GDB會從指內存定的內存地址開始,讀寫指定位元組,並把其當作一個值取出來。

n/f/u三個參數可以一起使用。例如:
命令:x/3uh 0x54320 表示,從內存地址0x54320讀取內容,h表示以雙位元組為一個單位,3表示三個單位,u表示按十六進制顯示。

12.自動顯示

你可以設置一些自動顯示的變數,當程序停住時,或是在你單步跟蹤時,這些變數會自動顯示。相關的GDB命令是display。
display
display/
display/ expr
expr是一個表達式,fmt表示顯示的格式,addr表示內存地址,當你用display設定好了一個或多個表達式後,只要你的程序被停下來,GDB會自動顯示你所設置的這些表達式的值。

格式i和s同樣被display支持,一個非常有用的命令是:
display/i $pc

undisplay
delete display
刪除自動顯示,dnums意為所設置好了的自動顯式的編號。

disable display
enable display
disable和enalbe不刪除自動顯示的設置,而只是讓其失效和恢復。

info display
查看display設置的自動顯示的信息。GDB會打出一張表格,向你報告當然調試中設置了多少個自動顯示設置,其中包括,設置的編號,表達式,是否enable。

13. 設置顯示選項
set print address
set print address on
打開地址輸出,當程序顯示函數信息時,GDB會顯出函數的參數地址。系統默認為打開的,
show print address
查看當前地址顯示選項是否打開。

set print array
set print array on
打開數組顯示,打開後當數組顯示時,每個元素佔一行,如果不打開的話,每個元素則以逗號分隔。這個選項默認是關閉的。與之相關的兩個命令如下,我就不再多說了。

set print array off
show print array

set print elements
這個選項主要是設置數組的,如果你的數組太大了,那麼就可以指定一個來指定數據顯示的最大長度,當到達這個長度時,GDB就不再往下顯示了。如果設置為0,則表示不限制。

show print elements
查看print elements的選項信息。

set print null-stop
如果打開了這個選項,那麼當顯示字元串時,遇到結束符則停止顯示。這個選項默認為off。

set print pretty on
如果打開printf pretty這個選項,那麼當GDB顯示結構體時會比較漂亮。

14.關於顯示源碼list

E. gdb模板枚舉值怎麼設置

1、首先打開gdb調試器,並登陸自己的個人螞吵賬戶。
2、其次點擊模板信息,點擊枚舉早纖值。
3、最後在界陸物仿面中,點擊最下方的設置,並進行信息編輯即可。

F. gdb如何看指向數組指針的內容

1: 對於在答磨應用程序中加孝察入參數進行調試的方法: 直接用 gdb app -p1 -p2 這樣進行調試是不行的。 需要像以下這樣使用: #gdb app (gdb) r -p1 -p2 或者在巧舉茄運行run命令前使用set args命令: (gdb) set args p1 p2 可以用show args 命令來查看

G. gdbset指令如何設置指針長度

gdbset指令設置指針長度的方法:
1、兄棗首先點擊電腦左下角開始圖標進入windows設置頁御肢面。
2、接著點擊gdbset指令設置選項。
3、最後點擊左側游標和指針,再調節更改指針大小即鎮塵世可。

閱讀全文

與gdb怎麼設置監控指針數據相關的資料

熱點內容
表示文件路徑用什麼字元隔開 瀏覽:549
word2010宏安全性設置 瀏覽:820
win7硬碟密碼設置 瀏覽:240
電腦有沒有這個文件在哪裡查 瀏覽:340
金蘋果內容摘要 瀏覽:580
網站怎麼對接qq在線客服 瀏覽:437
solidworks曲面建模教程 瀏覽:69
數控編程和計算機有什麼區別 瀏覽:541
jsp與webservice 瀏覽:659
k歌的數據包括什麼 瀏覽:300
寬頻wifi怎麼查看網站 瀏覽:97
vlog網頁編程怎麼樣 瀏覽:598
自助下單網站多少錢搭建 瀏覽:130
國外裝修都用什麼app 瀏覽:326
qq同步助手修改密碼 瀏覽:850
電腦與電腦傳輸文件 瀏覽:403
處理網路數據應用哪個好 瀏覽:229
萬靈召喚最新版本 瀏覽:566
電腦文件夾自動備份 瀏覽:380
御史大冒險怎麼升級快 瀏覽:284

友情鏈接