[問題] QEMU+GDB 開機, int 跳不過去的問題

看板LinuxDev作者 (Eric)時間12年前 (2013/03/23 12:04), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/2 (看更多)
各位版大好 我使用 QEMU -fda os.img -s -S + GDB remote 去 debug 我自己很簡單的 asm 在使用 target remote localhost:1234 之後很順利的連線到了qemu 下斷點 b *0x7c00 也可以順利地停在 eip 0x7c00 我第一個指令是 ljmp $0x07C0, $_start 但遇到個一個問題, ljmp 雖然可以把 CS:IP 設為 0x07c0:0, 但是之後的int 10使用 si 或是ni 就一去不回頭了 對int 10之後下斷點也沒用(例如對fin下斷點, 並不會在那邊中斷) 但是如果ld使用 -Ttext = 0x7c00 , 並且註解掉ljmp $0x07C0, $_start的話 cs = 0 , eip = 0x7c00 時, 似乎GDB 就可以讓我使用int 10 而且這兩種寫法, qemu 都可以正常模擬, 只是CS:IP 設為 0x07C0:0這種情況的 gdb 不給debug 是我 gdb 的參數沒有設好嗎, 我也設過 set architecture i8086 似乎也沒用 code 如下 .code16 ljmp $0x07C0, $_start _start: mov %cs,%ax mov %ax,%ds mov %ax,%es mov $0xFF00, %sp mov $12,%cx mov $MsgMove, %ax mov %ax, %bp mov $0x1301,%ax mov $0x00c,%bx int $0x10 fin: hlt jmp fin MsgMove:.ascii "Hello World!" .org 510 .word 0xaa55 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.169.183.75

03/23 18:04, , 1F
不知道是不是AMD 64 bit 的關係?
03/23 18:04, 1F
※ 編輯: ericwang1017 來自: 118.169.183.75 (03/23 19:24)

03/23 19:25, , 2F
位置有打錯, 已修正
03/23 19:25, 2F
文章代碼(AID): #1HJIdEGm (LinuxDev)
文章代碼(AID): #1HJIdEGm (LinuxDev)