【问题标题】:Debugging not highlighting current line [duplicate]调试不突出显示当前行[重复]
【发布时间】: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.
  • kgdblayout asm/反汇编模式吗?它看起来像一个不错的 UI,但是在调试 C 时,如果没有 asm 显示,步进指令按钮看起来真的很奇怪!
  • 尝试使用nasm -g -Fdwarf 生成调试符号的现代格式。 ld 只能包含 NASM 生成的调试信息;它不查看原始来源。

标签: assembly gdb kdbg


【解决方案1】:

当您从命令行和汇编源代码所在的同一目录启动时,KDbg 将突出显示当前行:

kdbg helloworld

很遗憾,gdb 不是从汇编源代码所在目录启动时,不报告绝对路径。 (它只是说helloworld.asm: No such file or directory.)通过上述解决方法,gdb 找到了文件并可以向 KDbg 报告足够的信息,以便它可以显示源代码。

【讨论】:

    猜你喜欢
    • 2012-07-05
    • 1970-01-01
    • 2012-07-23
    • 2020-10-30
    • 2016-09-25
    • 2011-07-21
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多