我有一个用以下命令组装和链接的汇编文件:
$ nasm -f elf -F dwarf -g -o FILENAME.o FILENAME.asm
$ ld -o FILENAME FILENAME.o
如您所见,我添加了
-g
,以便 nasm 生成调试符号。文件格式是这样的:
section .code:
global _start
_start:
ASM HERE
ANOTHER_LABEL:
ASM HERE
YET_ANOTHER_LABEL:
ASM HERE
当我启动
gdb -q FILENAME
并运行文件(run
)后,我尝试通过 _start
反汇编 disassemble _start
它给了我这个错误:
'_start' has unknown type; cast it to its declared type
当我尝试反汇编任何其他标签名称(_start
或ANOTHER_LABEL
)时,它给了我同样的错误(YET_ANOTHER_LABEL
更改)。
另外,当我只输入 disassemble
时,它只提供第一个标签的反汇编(从 _start
到 ANOTHER_LABEL
的开头)。
我该如何修复这个错误?
我知道这个问题很老了,但我也遇到了同样的问题并找到了解决方案:
从 .code 中删除“SECTION”标签,它应该可以工作,对我来说确实如此。