【问题标题】:gdb + nasm debug info not being created未创建 gdb + nasm 调试信息
【发布时间】:2012-09-08 16:40:18
【问题描述】:

我正在尝试调试我在 Ubuntu 中编写的一个小的 .asm 文件。然而,我遇到了一个问题,我的符号表没有被加载并且正在寻找一些帮助。

我正在编译我的程序如下。

nasm -f elf -g -F dwarf bs.asm
gcc -m32 -g bs.o -o bs

当我运行时会产生可执行的 bs

gdb bs 

我收到一条消息,提示没有调试符号,当我尝试设置断点时

b main 

它说函数未定义,即使它在文件中,我可以使用 ./bs 运行它

我阅读了几篇建议在组装时添加 -F dwarf 的帖子,但如果有人有任何见解,我将非常感谢您的意见。

【问题讨论】:

  • 我已将您的答案移至正确答案,因此问题看起来不再开放。
  • 我已经通过从链接器命令中删除 -s 标志解决了类似的问题,该标志由于某种原因而存在。

标签: debugging assembly gdb nasm


【解决方案1】:

cpowel2 解决了自己的问题:

已解决:以防万一其他人遇到同样的问题(网上似乎有很多帖子),我可以通过将文件的部分 .txt 部分更改为部分 .text 来解决问题gdb 马上就认出来了。

【讨论】:

  • 作为一个已经为这个问题苦苦挣扎一天的人,我遇到了一个类似的问题,事实证明如果你有 'segment .text:" ,它不会工作,你需要做确保您的段线后面没有冒号!!!
【解决方案2】:

部分.文本

;在 nasm 中 - 文本部分必须为小写,gdb 才能获取它。

【讨论】:

    【解决方案3】:

    使用以下命令组装您的文件:-

    nasm -f elf -F dwarf -g file.asm
    ld -m elf_i386 -o file file.o

    然后使用gdb,

    【讨论】:

    • 这真的很有帮助!看起来参数的顺序也很重要。
    猜你喜欢
    • 2012-05-27
    • 1970-01-01
    • 2015-03-01
    • 2015-03-01
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2011-10-01
    相关资源
    最近更新 更多