Como llegar GNU para emitir información por línea o BGF a las líneas de un solo paso en (AVR) Asamblea de depuración?

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

Pregunta

No puedo encontrar la manera de conseguir el gas para emitir información de número de línea de depuración para GDB en el montaje. Tenga en cuenta que estoy usando el compilador cruzado avr-gcc, pero duda de que es relevante.

Estoy usando las siguientes opciones de línea de comandos para montar: avr-gcc -g -ggdb -Os -mmcu = atmega644 -ffunction secciones-char -fsigned -Winvalid-PCH -Wall -Wno-largo largo -x ensamblador-con-CPP -Wa, -ggdb -c -o z813 .o z813.s

Cuando utilizo un conjunto casi idéntico de argumentos para compilar el código C, puedo ver el número de línea y la fuente de aumento de archivo usando 'objdump -l -d'.

Sin embargo, los objetos de montaje tienen ninguno. es decir,


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>

Cuando en avr-GDB (a través de la conexión simulavr GDB remoto), no puedo conseguir el depurador a un solo paso a través de mi código de montar, aunque sí reconoce los nombres de símbolos e información. Asumo que esto está relacionado.

Me puse en buen esfuerzo tratando de encontrar esta información en / Hombre / google y permutando las banderas probables. Cualquier ayuda apreciada!

¿Fue útil?

Solución

Cuando se "compila" código fuente ensamblador, invocando el compilador C es un tanto exagerado. El compilador reconoce que la entrada es un archivo C, e ignorar cualquier opción que se le pasen que afectan la compilación C, como -gy -Os. Pasar "-v" a la línea compilador para ver las opciones que consiguen una repercusión efectiva al ensamblador.

Cuando acoplen a

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

cuando me siento información de línea de la fuente de aspecto agradable en el archivo de objeto. Mi versión de avr-como (2.18.0) no admite una opción -ggdb en absoluto, que sólo tiene -g, --gstabs, --gstabs +, --gdwarf-2. Con puñaladas, objdump es capaz de mostrar las líneas. Con enana-2, no es - no estoy seguro de si eso es un error en objdump o registrarse como

.

Si insiste absolutamente de invocar el ensamblador como "gcc", debe pasar -Wa, -. Gstabs

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top