GDB調試NASM語法的彙編代碼

準備調試的nasm版的彙編代碼如下:

section .data
section .text
global main
main:
  ;100001/100
 mov rdx,1
 mov rax,86A1H
 mov rbx,100
 div rbx
 mov rax,60
 syscall

有的程序會用'_start'代替'main',但是我用_start字樣去測試時,總會出現:

輸入y之後有時程序會直接執行完推出,而我可是想單步執行並且查看寄存器狀態的呀,所以直接用'main'字眼了.

接着輸入以下命令:    nasm -f elf64 -o div.0 div.asm

                                 ld -o div div.o

它會提示一個警告,這是由於我們沒有使用'_start'字眼,直接忽略~~~~~

接着輸入gdb div 啓動gdb,輸入start開始運行該程序

如果以上操作都沒有問題的話,那麼我們就開始單步調試了.

這裏使用的命令爲ni來單步調試程序,注意有的博客輸入的命令爲n或者next,我在我個人機器發現這樣輸入會把整個程序一次跑完.

然後輸入info register命令來檢查寄存器的狀態.

這裏也可以說明,採用'main'字眼,gdb會自動爲程序設置一個臨時斷點.

接下來,我們每輸入一次ni,info register命令來單步執行程序並查看寄存器狀態.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章