gdb不能步骤,但可以在行中断行

时间:2015-09-12 04:58:40

标签: gdb nasm debug-symbols

我有一个用nasm编译的文件,@echo off w32tm /query /peers net stop w32time net start w32time w32tm /resync /nowait EOF ,这是nasm -f elf64 -g helloworld.asm的输出:

objdump -g -d -M intel helloworld.o

所以,至少对我而言,看起来它有调试信息。当我运行gdb时,我可以在任何一行设置一个断点,并在正确的内存地址中断[并且每个寄存器都按预期更新]但我无法继续,因为我得到了可怕的

helloworld.e:     file format elf64-x86-64


Disassembly of section .text:

00000000004000b0 <_start>:
  4000b0:       b8 04 00 00 00          mov    eax,0x4
  4000b5:       bb 01 00 00 00          mov    ebx,0x1
  4000ba:       48 b9 d8 00 60 00 00    movabs rcx,0x6000d8
  4000c1:       00 00 00
  4000c4:       ba 0b 00 00 00          mov    edx,0xb
  4000c9:       cd 80                   int    0x80
  4000cb:       b8 01 00 00 00          mov    eax,0x1
  4000d0:       bb 00 00 00 00          mov    ebx,0x0
  4000d5:       cd 80                   int    0x80
helloworld.asm:
/* file helloworld.asm line 9 addr 0x4000b0 */
/* file helloworld.asm line 10 addr 0x4000b5 */
/* file helloworld.asm line 11 addr 0x4000ba */
/* file helloworld.asm line 12 addr 0x4000c4 */
/* file helloworld.asm line 13 addr 0x4000c9 */
/* file helloworld.asm line 14 addr 0x4000cb */
/* file helloworld.asm line 15 addr 0x4000d0 */
/* file helloworld.asm line 16 addr 0x4000d5 */

我的gdb版本是7.7.1,nasm版本是2.10.9。

任何人都有任何想法?

1 个答案:

答案 0 :(得分:1)

在您的情况下,问题似乎是nasm和gdb之间的版本偏差。

尝试将gdb版本至少更新为7.8。