我写了一个汇编程序,仅用于测试目的,只是退出。代码如下:
section .text
_global start
_start:
mov eax, 1
mov ebx, 0
int 0x80
这个程序显然是32位的,但是我使用的是一个64位的处理器和操作系统,所以我用nasm编译并链接它,如下:
nasm -f elf exit.asm
ld -m elf_i386 -s -o exit exit.o
使用gdb调试程序时,由于没有调试符号,无法列出代码。
(gdb) list
No symbol table is loaded. Use the "file" command.
在使用gcc时,您可以使用选项-ggdb在编译c文件时加载符号。但是,由于我不知道如何使用gcc为64位机器编译32位汇编(我已经搜索过了,但找不到解决方案),所以我被迫使用ld。我能否使用ld加载调试符号?抱歉问题有点长,并且包含了一些多余的信息。谢谢。
nasm -g -F dwarf -f elf exit.asm
没有起作用。 - Dark Eaglenasm -felf -g -l exit.lst exit.asm
也不起作用。 - Dark Eagle