【发布时间】:2011-11-19 19:30:07
【问题描述】:
我在搜索其他线程时运气不佳。 我的问题可能很简单但令人沮丧。 我正在 64 位 Ubuntu 11.04 上编译两个文件:
nasm -f elf64 -g file64.asmgcc -g -o file file.c file64.o
然后我使用 gdb 调试生成的可执行文件。 使用 C,一切正常。 但是,在调试程序集时,源代码对调试器“不可见”。我得到以下输出:
(gdb) step
Single stepping until exit from function line,
which has no line number information.
0x0000000000400962 in convert ()
快速调查:
objdump --source file64.o
表明汇编源代码(和行信息)包含在文件中。
为什么我在调试会话中看不到它?我究竟做错了什么? 这些问题是在迁移到 64 位 Ubuntu 后出现的。在 32 位 Linux 中它可以工作(应该如此)。
【问题讨论】:
-
不知道是否有帮助,但您是否尝试过明确指定 nasm 的调试格式?例如。
nasm -f elf64 -F stabs -g file64.asm -
不,Dmitri,不幸的是它没有帮助。还是一样的情况,谢谢你的回复
-
我做了一个实验。我在 32 位版本的 Ubuntu(我也有)下构建了 64 位目标文件(file64.o)并在 64 位系统下链接它,现在它可以工作了(!)但是 nasm 的调用总是相同的:
nasm -f elf64 -g file64.asm我一直以同样的方式使用 gdb。看起来问题出在 64 位版本的 nasm 中(我猜)