我正在Linux(Arch 64)上进行一些x86汇编程序编码,使用nasm汇编和ld链接,从而创建一个32位可执行文件:
wordcount: wordcount.o
ld -o wordcount wordcount.o -melf_i386
wordcount.o: wordcount.asm
nasm -f elf -g -F stabs wordcount.asm -l wordcount.lst
当我在gdb(版本7.7)下打开可执行文件时,源符号加载正常,我可以通过各个前端的源窗口设置断点(我在Emacs(24.3.1)下尝试过GUD,ddd( 3.3.12)和kdbg(2.5.4)),但是当单步执行代码时,当前行没有用箭头或三角形符号表示,就像单步执行C源代码时那样。
我看过类似问题的答案,我明白我可以通过反汇编窗口找到当前的指令,或者通过获取主gdb窗口来反汇编下一行,但我真的很想得到当前行箭头指示器在源窗口中工作,这样我可以在单步执行代码时查看我的源代码。有人有这个工作吗?或者有没有理由说这不适用于汇编语言程序?
注意:我也试过创建一个64位可执行文件并遇到同样的问题。
答案 0 :(得分:4)
你应该使用 dwarf 格式而不是 stabs ,如下所示:
nasm -f elf -g -F dwarf wordcount.asm -l wordcount.lst