我无法弄清楚如何让 GAS 在汇编中为 gdb 发出行号调试信息。请注意,我使用的是 avr-gcc 交叉编译器,但怀疑是否相关。
我正在使用以下命令行选项进行组装:avr-gcc -g -ggdb -Os -mmcu=atmega644 -ffunction-sections -fsigned-char -Winvalid-pch -Wall -Wno-long-long -x assembler-with -cpp -Wa,-ggdb -c -o z813.o z813.s
当我使用一组几乎相同的参数来编译 C 代码时,我可以使用“objdump -l -d”查看行号和源文件扩充。
然而,装配对象没有。IE
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 连接)时,我无法让调试器单步执行我的汇编代码,尽管它确实识别符号名称和信息。我认为这是相关的。
我努力尝试在 info/man/google 中找到它并排列可能的标志。任何帮助表示赞赏!