檢視棧資訊
當程式被停住了,首先要確認的就是程式是在哪兒被斷住的。這個一般是通過檢視呼叫棧資訊來看的。在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 ...