Come arrivare GNU da emettere per-linea di informazioni o GDB alle linee step singoli (AVR) Assembly di debug?

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

Domanda

Non riesco a capire come ottenere il gas di emettere numero di riga informazioni di debug per gdb in assemblea. Si noti che sto usando il compilatore gcc croce AVR-, ma dubbio che è rilevante.

Sto usando le seguenti opzioni della riga di comando per l'assemblaggio: avr-gcc -g -ggdb -Os -mmcu = atmega644 -ffunction sezioni-char -fsigned -Winvalid-PCH--Wall -Wno lungo lungo -x assemblatore-con-cpp -Wa, -ggdb -c -o z813 .o z813.s

Quando uso un insieme quasi identico di argomenti di compilare il codice C, posso vedere il numero di riga e sorgente aumento file usando 'objdump -l -d'.

Tuttavia gli oggetti di montaggio non ne hanno. vale a 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>

Quando nel AVR-gdb (tramite collegamento simulavr gdb remoto), non riesco a ottenere il debugger per singolo passo attraverso il mio codice montare, anche se lo fa riconoscere i nomi e le informazioni di simboli. Presumo che ciò è correlato.

ho messo in buon sforzo cercando di trovare questo nelle informazioni / uomo / google e permutando le probabili bandiere. Qualsiasi aiuto apprezzato!

È stato utile?

Soluzione

Quando si "compila" codice sorgente assembler, invocando il compilatore C è un po 'eccessivo. Il compilatore riconoscerà che l'ingresso è un file C, e ignorare tutte le opzioni che si passa che influenzano la compilazione C, come -g e -Os. Pass "-v" alla linea del compilatore per vedere le opzioni che vengono effettivamente passati alla assembler.

Quando ho montare con

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

tanto sono informazioni di bell'aspetto riga di origine nel file oggetto. La mia versione di avr-as (2.18.0) non supporta l'opzione -ggdb a tutti, ha solo -g, --gstabs, --gstabs +, --gdwarf-2. Con coltellate, objdump è in grado di visualizzare le linee. Con nano-2, non è - non sono sicuro che sia un bug in objdump o come

.

Se proprio insisti a invocare l'assemblatore come "gcc", si dovrebbe passare -Wa, -. Gstabs

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top