Comment obtenir GNU à émettre par ligne informations de débogage ou GDB aux lignes seule étape (AVR) Assemblée?

StackOverflow https://stackoverflow.com/questions/1275944

Question

Je ne peux pas comprendre comment obtenir du gaz pour émettre le numéro de ligne des informations de débogage pour gdb dans l'assemblage. Notez que j'utilise le compilateur croisé avr-gcc, mais le doute qui est pertinent.

J'utilise les options de ligne de commande suivante pour assembler: avr-gcc -g -ggdb -Os -mmcu = ATmega644 -ffunction sections -fsigned-char -Winvalid-pch -Wall -Wno-long-long -x assembleur-with-cpp -Wa, -ggdb -c -o z813 .o z813.s

Quand j'utilise un ensemble presque identique d'arguments pour compiler le code C, je peux voir le numéro de ligne et l'augmentation de fichier source à l'aide « objdump -l -d ».

Toutefois, les objets de montage ont pas. à-dire


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>

Lorsqu'en-gdb AVR (via simulavr connexion gdb à distance), je ne peux pas obtenir le débogueur à étape unique à travers mon code assembler, bien qu'il reconnaisse les noms de symboles et d'information. Je suppose que cela est lié.

Je mets en bon effort d'essayer de trouver ce dans info / homme / google et permutant les drapeaux probables. Toute aide appréciée!

Était-ce utile?

La solution

Lorsque vous « compilez » code source assembleur, l'appel du compilateur C est un peu exagéré. Le compilateur reconnaîtra que l'entrée est un fichier C, et ignorer toutes les options que vous transmettez ce qui affectent la compilation C, comme -g et -Os. Pass « -v » à la ligne du compilateur pour voir les options qui se fait transmis à l'assembleur.

Quand j'assemble avec

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

puis-je obtenir des informations de ligne de source de belle apparence dans le fichier objet. Ma version de avr-as (2.18.0) ne supporte pas une option -ggdb du tout, il n'a que -g, --gstabs, --gstabs +, --gdwarf-2. Avec coups de couteau, objdump est capable d'afficher les lignes. Avec nain-2, ce n'est pas - je ne suis pas sûr que ce soit un bogue dans objdump ou comme

.

Si vous tenez absolument à appeler l'assembleur comme "gcc", vous devez passer -Wa, -. Gstabs

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top