У меня есть файл, скомпилированный с 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.
У кого-нибудь есть идеи?
не работает с gdb 7.9 либо – user2293382
Работает ли он, если вы добавляете '-F dwarf' в командную строку nasm? –
ну, я думал, что попробовал и не работал, но теперь это так. Наверное, я где-то перепутал, извините за шум! – user2293382