2018年9月27日 星期四

x86 Assembly in Linux - part 6

寫組語前除了用紙筆安排要用的暫存器外,最好也是分段撰寫,這樣比較方便除錯。

大部份的錯誤都是常數忘記加上 "$",或是 instruction 的單位用錯

即使如此,code 還是常常不如預期,幸好我們可以很簡單的用 GDB 來 debug。

相關步驟如下:
"as -gstabs add debug information to object
"objdump -D a.out | less" or "nm a.out" 利用此步驟找到相關變數或 label 的 address
"gdb a.out" 執行 GDB
"b label name" 對要監控的 label 下斷點
"display /i $pc" 顯示當前執行的組語
"run" 執行程式
斷點觸發
"info all-registers" 觀看目前所有暫存器值
"p $eax" 觀看 eax
"p abc" 觀看 variable abc
"x/x address" 觀看 address hex value
"step" 單步執行

當然也可以使用包裝 GDB 的 GUI tool。

沒有留言:

張貼留言