【发布时间】:2018-03-11 12:57:17
【问题描述】:
目前正在使用 kdbg,我发现虽然我可以调试代码并看到寄存器按预期变化,但我看不到源代码窗口中突出显示的当前行:
从网络上的示例中,我希望在源窗口中看到突出显示的行。
我在 Ubuntu 16.04 上使用 kdbg 2.5.4。 Makefile 内容为:
helloworld: helloworld.o
ld -m elf_i386 -o helloworld helloworld.o
helloworld.o: helloworld.asm
nasm -f elf32 -g -F stabs helloworld.asm -o helloworld.o
更新 1
它可能相关也可能不相关,但只是为了完整性,在 Xterm 窗口“KDbg:程序输出”窗口中,我可以看到以下内容:
warning: GDB: Failed to set controlling terminal: Operation not permitted
更新 2
我按照 cmets 中的建议更新了链接器命令,但仍然遇到同样的问题:
helloworld: helloworld.o
ld -g -m elf_i386 -o helloworld helloworld.o
【问题讨论】:
-
这很可能是因为您构建时没有调试信息(没有
-g)。 -
更新了问题,包括我是如何组装和链接的。
-
看起来像是 kgdb 中的一个错误。您可以在独立 gdb 中尝试
layout asm。看到这个答案:stackoverflow.com/a/2015523/72178. -
kgdb有layout asm/反汇编模式吗?它看起来像一个不错的 UI,但是在调试 C 时,如果没有 asm 显示,步进指令按钮看起来真的很奇怪! -
尝试使用
nasm -g -Fdwarf生成调试符号的现代格式。ld只能包含 NASM 生成的调试信息;它不查看原始来源。