2015-09-12 3 views
0

У меня есть файл, скомпилированный с NASM, с nasm -f elf64 -g helloworld.asm, а вот выход objdump -g -d -M intel helloworld.o:GDB не может уйти, но может сломаться на линии NASM

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 */ 

так, по крайней мере, для меня, это выглядит как у него есть отладочная информация. когда я отлаживать, я могу установить точку останова в любой строке, и он рвется на соответствующий адрес памяти [и каждый регистр обновляется, как и ожидалось] пока я не могу уйти, так как я получаю ужасный

Single stepping until exit from function _start, 
which has no line number information. 

Мой GdB версия 7.7.1, а версия nasm - 2.10.9.

У кого-нибудь есть идеи?

+0

не работает с gdb 7.9 либо – user2293382

+0

Работает ли он, если вы добавляете '-F dwarf' в командную строку nasm? –

+0

ну, я думал, что попробовал и не работал, но теперь это так. Наверное, я где-то перепутал, извините за шум! – user2293382

ответ

1

Кажется, в вашем случае проблема заключается в перекосе версии между nasm и gdb.

Попробуйте обновить версию gdb как минимум до 7.8.

+0

Я обновил до 7.9, и проблема остается – user2293382

Смежные вопросы