¿Es posible establecer un punto de interrupción en AVR Studio en archivos distintos de aquel en el que está la función main ()?

3

Si tengo un proyecto con más de una unidad de traducción, AVR Studio solo me permite establecer puntos de interrupción en el archivo c principal.

No importa si incluyo los otros archivos directamente por #include "something.c" o utilizando su encabezado.

Una búsqueda rápida en varios foros integrados no dio como resultado ninguna respuesta o incluso una discusión sobre este tema. ¿Todos están utilizando una sola unidad de traducción al realizar la depuración, o perdí una característica a simple vista?

El proyecto fue generado por CodeVision, si es de alguna relevancia.

    
pregunta vsz

2 respuestas

1

Sí, puedes.

No importa si está en el archivo C principal o no, si hay una ruta en el árbol de llamadas de función (que obviamente tiene main en su raíz) donde el control pasa la línea , deberías poder establecer un punto de interrupción en él.

Utilizo un depurador JTAG y en el software del depurador cargo un archivo ELF que vincula las funciones y variables en el código a las direcciones en el archivo HEX. Entonces, si no puede depurar a través del código, verifique si tiene algo similar y, en caso afirmativo, verifique que se genere correctamente.

O puede que tengas un problema completamente diferente. Es posible que algunos de sus archivos no estén incluidos en la compilación. Revisa tu registro de compilación para verificar esto.

    
respondido por el Gavin
1

Debes incluir los otros archivos en tu proyecto. Como archivos fuente. Incluirlos como #include, o sus encabezados, no funciona.

Si los incluye con #include, tiene una sola unidad de traducción. Debe configurarlas como unidades de traducción múltiples para que los puntos de ruptura funcionen.

Todas las versiones recientes de GCC incluyen soluciones alternativas de enlace inteligente (--combine-fwhole-program) que pretenden ser un método alternativo para crear una unidad de traducción única (los programas de unidades de traducción única generalmente son más pequeños y más rápidos). Necesitas crear tu propio archivo make para hacer eso. No he intentado usar el depurador: podría funcionar (porque el IDE incluye todos los archivos de origen en la rama del "archivo de origen", o podría no funcionar (porque el IDE no puede seguir cómo se vincularon los archivos de origen).

    
respondido por el david

Lea otras preguntas en las etiquetas