GDB資料檢視

2021-09-29 02:45:45 字數 1686 閱讀 7726

檢視棧資訊

當程式被停住了,首先要確認的就是程式是在哪兒被斷住的。這個一般是通過檢視呼叫棧資訊來看的。在gdb中,檢視呼叫棧的命令是backtrace,可以簡寫為bt。

(gdb) bt

#0 pop () at stack.c:10

#1 0x080484a6 in main () at main.c:12

也可以通過info stack命令實現類似的功能(我更喜歡這個命令):

(gdb) info stack

#0 pop () at stack.c:10

#1 0x080484a6 in main () at main.c:12

檢視源程式

當程式斷住是,gdb會顯示當前斷點的位置:

breakpoint 1, pop () at stack.c:10

10 return stack[top--];

可以用list命令來檢視當前斷點附近的程式的源**:

(gdb) list

5 int top = -1;67

8 char pop(void)

9 12

13 void push(char c)

14

我們可以以如下方式獲取函式的返回值:

1. 通過finish命令執行至函式結束,此時會列印函式返回值。

(gdb) finish

run till exit from #0 foo () at main.c:9

main () at main.c:15

15 }

value returned is $2 = 100

2. 返回值會儲存在eax暫存器中,通過檢視資訊可以獲取返回值。

(gdb) p $eax

$3 = 100

(gdb) info registers

eax 0x64 100
檢視連續記憶體

可以使用gdb的"@"操作符檢視連續記憶體,"@"的左邊是第乙個記憶體的位址的值,"@"的右邊則你你想檢視記憶體的長度。

例如,對於如下**:int arr = ;,可以通過如下命令檢視arr前三個單元的資料。

(gdb) p *arr@3

$2 =
檢視記憶體

x /(gdb) x /16uh arr

0xbffff4cc: 2 0 4 0 6 0 8 0

0xbffff4dc: 10 0 34032 2052 0 0 0 0

自動顯示

在visualstudio中,可以通過監視視窗動態檢視變數的值。在gdb中,也提供了類似的命令display,它的語法是:

display display /display /
expr是乙個表示式,fmt表示顯示的格式,addr表示記憶體位址。當你用display設定好了乙個或多個表示式後,只要你的程式被停下來(單步跟蹤時),gdb會自動顯示你所設定的這些表示式的值。

Mysql Binlog資料檢視的方法

binlog介紹 binlog,即二進位制日誌,它記錄了資料庫上的所有改變.改變資料庫的sql語句執行結束時,將在binlog的末尾寫入一條記錄,同時通知語句解析器,語句執行完畢.binlog格式 基於語句,無法保證所有語句都在從庫執行成功,比如update limit 1 基於行,將每一次改動記為...

Stata基礎自學 資料檢視

本部落格為未明學院 零基礎stata訓練營 課程學習筆記 list 列出當前記憶體中的所有資料 browse 使用資料瀏覽器開啟當前記憶體中的資料 label data label 為當前記憶體中的所有資料新增標籤 label label var varname label 為變數varname新增...

gdb檢視指標指向資料

示例 如下 include includeint main i 0 for i 10 i free p return 0 編譯命令gcc g omain memlook.c然後執行gbd main進入除錯。gdb list 15 10 11 i 0 12 for i 10 i 13 16 free ...