大部份的錯誤都是常數忘記加上 "$",或是 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。