Pages: [1]   Go Down
Author Topic: Comment debugger du code arduino complexe?  (Read 918 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,
Existe -t-il une sorte de debugger qui pourrait fonctionner en mode pas à pas un peu comme un visual studio avec des break point par ex?
C'est dommage qu'il n'y ait pas cette possibilité dans l'IDE d'arduino.
On peut toujours placer des traces avec la méthode serial pour retourner des variables mais c'est tout de même pas très pratique de compiler et linker à chaque fois.
Est-ce que quelqu'un à une autre solution pour pouvoir debugger/simuler des codes complexes et lire ces variables progressivement ?
J'ai tout de même l'impression que l'environnement Arduino n' est pas vraiment fait pour ça!
Ce qui est contradictoire est le fait qu'il est possible d'atteindre des niveaux de complexité importants vu l'étendu du "Language Reference"
Vous en pensez quoi ? 
Merci
« Last Edit: October 19, 2011, 06:12:05 pm by SEBASS » Logged

Chulak
Offline Offline
Full Member
***
Karma: 2
Posts: 234
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

il est peut être possible.. apres personnellement je sais pas ... avant quand je développais avec des pics .. j'utilisai la EasyPic3 .. mais j'avais lu comme quoi la EasyPic 4 ou 5 avais un débugger intégrer a la carte de dev ... maintenant sa doit être assez compliquer de mettre sa en oeuvre.. sur l'arduino..
Logged

Aimez la Vie, mais preferez la Mort, car seulement celle-ci vous liberera des tenebres de la Vie.

France
Offline Offline
Faraday Member
**
Karma: 55
Posts: 5347
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

A moins d'avoir un débuggeur comme l'AVR dragon c'est impossible de faire du pas à pas sur une carte arduino.

Les microcontroleurs utilisaient dans les boards arduino n'utilisent plus le JTAG pour le débugage par conséquent les débuggeur DIY JTAG ne fonctionne plus.
A la place ils utilisent le protocole SWD (single wire debug), protocole jalousement gardé secret par ATMEL, à l'heure actuelle je ne crois pas qu'il existe de débuggeur DIY (ou non atmel) supportant le SWD d'atmel.

Si tu à un débuggeur  MKII, AVR dragon, ... copie les fichiers généré lors de la compilation (.elf, .lst, ...) qui ce trouve dans le dossier temp et ajoute les dans un projet avrstudio, connecte ton débuggeur et tu devrait pouvoir lancer le debug (! debug du code final donc avec tout le "core" arduino).
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

France
Offline Offline
God Member
*****
Karma: 4
Posts: 971
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Même réponse que skywood
3 petits ajouts :

-le protocole debugWire utilisé sur les AVR sans JTAG commence a etre mis à jour mais je ne sais pas si les résultats sont exploitables à ce niveau ... ca viendra sans doute un jour:
http://ruemohr.org/docs/debugwire.html

-le debugWire utilise intensivement la broche Reset. Une modification des cartes Arduino est nécessaire selon cette page pour les heureux possesseurs d'un 'Dragon':
http://husks.wordpress.com/2010/02/21/modify-an-arduino-for-debugwire/

-le fichier elf permet un débuggage sommaire par simulation dans AvrStudio ou autre soft possédant un simulateur AVR et acceptant le format elf (Proteus par exemple). Le débuggage par simulation, c'est mieux que rien !

Quote
J'ai tout de même l'impression que l'environnement Arduino n' est pas vraiment fait pour ça!
Même impression. Les atouts d'Arduino sont ailleurs !!
« Last Edit: October 18, 2011, 05:11:21 pm by al1fch » Logged

France
Offline Offline
Faraday Member
**
Karma: 39
Posts: 3613
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
J'ai tout de même l'impression que l'environnement Arduino n' est pas vraiment fait pour ça!
Tout à fait d'accord en conséquence de quoi il faut travailler autrement.
- découper son programme en fonctions simples
- les tester de manière unitaire
- quand le test unitaire des fonctions est terminé on intègre les fonctions dans le programme final.
Logged

0
Offline Offline
Jr. Member
**
Karma: 2
Posts: 52
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

J'utilise une méthode qui marche plutot bien et qui est simple a mettre en oeuvre:

Chaque fois que j ai besoin de surveiller une variable, ou le passage dans un point precis du sketch, je rajoute a cet endroit une instruction Serial .print() ou Serial.println()  (ne pas oublier le Serial.begin() dans le setup() ). Lorsque la partie concernée est au point, j'enlève ces quelques lignes Serial.xxx() .
J'utilise le Serial Monitor pour visauliser le resultat correspondant.
Logged

Offline Offline
Sr. Member
****
Karma: 2
Posts: 259
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

On peut toujours placer des traces avec la méthode serial pour retourner des variables mais c'est tout de même pas très pratique de compiler et linker à chaque fois.

SEBASS connait déjà cette technique smiley
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 13
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

- découper son programme en fonctions simples
- les tester de manière unitaire
- quand le test unitaire des fonctions est terminé on intègre les fonctions dans le programme final.


Oui, c'est ce que j'applique, il faut y aller progressivement finalement
C'est une question d'organisation avant tout ce qui évite déjà pas mal de gros pb...
J'ai aussi cette solution:
Je vérifie mon code dans un projet C++ de Visual Studio pour simuler certains calculs avec F5 (en mode debogage + break point), il faut après l'adapter par rapport au code arduino en simulant certaine fonctions.
Dans tous les cas merci pour vos idées
Logged

Pages: [1]   Go Up
Jump to: