2012-09-15 114 views
3

我想调试一个我在Ubuntu中编写的小型.asm文件。然而,我遇到了一个问题,我的符号表没有被加载,并正在寻求一些帮助。gdb + nasm调试信息未被创建

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

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

产生可执行BS当我运行

gdb bs 

我得到一个消息,说没有调试符号,当我试图通过

b main 

设置一个破发点,它说函数没有定义,即使它在文件中,我可以运行它使用./bs

我读了一个cou建议在组装时添加-F矮人,但如果任何人有任何洞察力,这将无济于事,我将不胜感激您的意见。

+0

我搬到你的答案正确的答案,所以这个问题将不再看开。 –

+1

我已经通过从链接器命令中删除'-s'标志来解决类似的问题,该命令出于某种原因。 – Kolyunya

回答

3

cpowel2解决了自己的问题:

解决:万一别人也有同样的问题(好像有在网络上一吨的职位),我能够解决这个问题将我的文件的section .txt部分更改为.text和gdb部分。

+0

作为一个一直在为这个问题而苦苦挣扎的人,现在我有一个类似的问题,事实证明,如果你有'segment .text:',它不会工作,你需要确保你的段线没有冒号后面!!! – mgrandi

0

SECTION .text

;在nasm中 - 文本部分必须用小写字母表示,以便gdb检索它。

5

组装用下面的命令文件: -

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

,然后用GDB,

+0

这真的很有帮助!它看起来像参数的顺序很重要。 – 1a1a11a