我不能找出如何让气体以发射用于在组装的gdb行号的调试信息。请注意,我用的AVR-GCC交叉编译器,但疑问是相关的。

我使用下面的命令行选项来组装: AVR-GCC -g -ggdb -Os -mmcu = atmega644 -ffunction截面-fsigned炭-Winvalid-PCH -Wall -Wno - 长 - 长-x汇编程序与-CPP -Wa,-ggdb -c -o z813的.o z813.s

当我使用几乎相同的组参数来编译的C代码,我可以看到使用“objdump的-l -d”行号和源文件的增强。

然而,组件对象没有。即


000000d4 <run_timetable>:
      d4:       0e 94 57 00     call    0xae    ; 0xae <run_timetable_row>
      d8:       0e 94 b4 00     call    0x168   ; 0x168 <delay>

vs

00000f9c :
main():
/home/braddock/work/tviki/tviki/scratch/z813-vid.c:68
     f9c:       0e 94 ae 07     call    0xf5c   ; 0xf5c <init>
/home/braddock/work/tviki/tviki/scratch/z813-vid.c:70
     fa0:       0e 94 6a 00     call    0xd4    ; 0xd4 <run_timetable>

当在AVR-GDB(经由simulavr远程GDB连接),我无法通过我的汇编代码获得调试器单步,尽管它的确识别符号名称和信息。我认为这是相关的。

我把好好努力试图找到这在信息/人/谷歌和置换的可能标志。任何帮助表示赞赏!

有帮助吗?

解决方案

当你“编译”汇编源代码,调用C编译器是有点矫枉过正。编译器将识别输入是一个C文件,而忽略你通过它影响C语言编译任何选项,如-g和-Os。通过“-v”编译器网上看到获得实际传递给汇编器的选项。

当我装配用

avr-as --gstabs -mmcu=atmega644 a.s -o a.o

然后我得到在目标文件中好看的源极线的信息。我的AVR-AS(2.18.0)在所有不支持-ggdb选项版本,它只有-g,--gstabs,--gstabs +,--gdwarf-2。用刺,objdump的能够显示的行。随着矮2,这不是 - 我不知道这是否是一个错误objdump的或以

如果你绝对坚持调用汇编为“海湾合作委员会”,你应该通过-Wa, - 。gstabs

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top