[DCMOTO] Amélioration de la fonction "Trace"

Couvre tous les domaines de l'émulation ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Carl, Papy.G, fneck

Avatar de l’utilisateur
Patrice
Messages : 1251
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Patrice »

Pour DcAlice_20210325 fonctionnement Ok. Merci Daniel pour cette nouvelle amélioration de l'émulateur vraiment très pratique. 8) :D

[EDIT 01] Le traçage est identique pour les modes inactif, statique, pas à pas et saut sous-programme, est ce normal (si oui c'est dommage car une prise en compte de ceux-ci aurait permis d'alléger, quand nécessaire, le listing résultant)?
Mais j'abuse peut-être. :lol:
Dernière modification par Patrice le 25 mars 2021 17:50, modifié 2 fois.
Alice la passion ;-)
Avatar de l’utilisateur
6502man
Messages : 10948
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par 6502man »

Impeccable Daniel ;)

Ca va rendre bien service aux programmeurs :D
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Bentoc
Messages : 68
Inscription : 14 sept. 2019 13:35
Localisation : Var - France

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Bentoc »

C'est une excellente idée Daniel, avec 2000 lignes c'était tendu pour retrouver le point du code ou le pc "sort des rails".
Maintenant avec la fonction trace, c'est "royal" 8)
On va gagner des heures de debug avec ça ! Merci bcp.
Avatar de l’utilisateur
adnz
Messages : 110
Inscription : 10 janv. 2010 00:07

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par adnz »

ça c'est cool merci, d'avoir plus de ligne de debug ...

Mais c'est moi bigle ;) ou, moi j'ai max en téléchargement la version dcmoto_20200429

Je ne trouve pas le lien d'une version 2021 !! :(

merci.

[EDIT] ! vu, merci :shock:
Dernière modification par adnz le 25 mars 2021 21:04, modifié 1 fois.
Zebulon
Messages : 616
Inscription : 02 nov. 2020 14:03

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Zebulon »

Le lien de la dernière version se trouve dans le paragraphe sous les copies d'écrans, en tout petit. :D
Daniel
Messages : 13926
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

Patrice a écrit : 25 mars 2021 17:05 Le traçage est identique pour les modes inactif, statique, pas à pas et saut sous-programme, est ce normal ?
Je l'ai conçu comme ça : la trace contient toutes les instructions sans exception.
Je prévois déjà un petit aménagement pour éviter de répéter des milliers de fois la même ligne dans le cas des instructions CWAI et SYNC. Par exemple mettre une seule ligne avec un compteur quand il y a plusieurs lignes identiques à la suite.
Avec un fichier trace contenant plus d'un million de lignes ce n'est peut-être pas nécessaire, on verra à l'usage, et on trouvera peut-être d'autres aménagements utiles. J'adapterai en fonction des demandes des développeurs, si elles me semblent justifiées.
Daniel
L'obstacle augmente mon ardeur.
nouvelhermes
Messages : 65
Inscription : 22 juil. 2020 20:56

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par nouvelhermes »

Bonjour à tous,

Merci Daniel pour cette fonctionnalité.

Malheureusement chez moi, le logiciel (dcmoto ou dcalice) plante quand je coche la case "trace", alors dcmoto et dcalice fonctionnent parfaitement (je suis sous XP SP3)

Une amélioration intéressante (mais certainement difficile à mettre en oeuvre) serait de sélectionner les instructions devant figurer dans le fichier (par ex, uniquement les JSR ou CALL PUTC par exemple).
nouvelhermes
Messages : 65
Inscription : 22 juil. 2020 20:56

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par nouvelhermes »

Serait-il possible aussi par exemple d'ajouter une case pour n'avoir dans le fichier que les adresses situées en RAM, et éventuellement d'ajouter le numéro de la banque dans laquelle on se trouve ? Et éventuellement quand on lit (écrit) une mémoire écran, l'état de A7C0 ? Je sais ça fait beaucoup.

En tout cas merci pour la fonction.
Avatar de l’utilisateur
Patrice
Messages : 1251
Inscription : 14 janv. 2008 10:42
Localisation : https://www.ville-saintes.fr/
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Patrice »

Daniel a écrit : 25 mars 2021 21:23 .....Je l'ai conçu comme ça : la trace contient toutes les instructions sans exception....
Cette fonction est très intéressante effectivement pour l'étude en profondeur d'un programme et donc l'analyse de toutes les couches liées au système pour lequel il a été conçu, c'est un plus indiscutable à conserver impérativement. 8) :D
Le seul handicape mineur, c'est le volume du fichier de traçage généré.
De mon point de vue, l'ajout d'une trace effectuée au niveau d'une seule couche (saut des sous-programmes) diminuerait considérablement le volume du fichier de traçage et permettrait également de mettre facilement en évidence l'enchaînement logique du programme en étude. :wink:
Alice la passion ;-)
Daniel
Messages : 13926
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

nouvelhermes a écrit : 26 mars 2021 03:45 Malheureusement chez moi, le logiciel (dcmoto ou dcalice) plante quand je coche la case "trace", alors dcmoto et dcalice fonctionnent parfaitement (je suis sous XP SP3)
Il y a peut-être une incompatibilité des dernières versions de dcmoto avec Windows XP. Il faudrait voir à partir de quelle version ça ne marche plus pour trouver la cause de cette incompatibilité. La fonction Trace n'utilise que des fonctions très classiques, ce n'est pas forcément la cause du problème.
[Edit 10:30] En testant la version 20210325 de dcmoto dans une machine virtuelle Windows XP j'ai aussi le plantage en cliquant sur la case Trace. C'est donc bien la cause du problème. C'est assez surprenant. Je vais chercher l'erreur...
[Edit 11:45] Erreur trouvée : Si on cherche à fermer un fichier jamais ouvert, Windows 10 signale l'erreur mais ne plante pas. Windows XP plante directement. Je corrige en ajoutant un test avant l'appel de la fonction fclose().

Pour les autres sujets :

Dans chaque ligne de la trace il est possible d'ajouter d'autres informations, en particulier la page vidéo et (pour les machines à commutation de banques) la banque RAM et la banque ROM. C'est une information utile pour la mise au point des programmes.

Filtrer les lignes en fonction de différents critères dépasse l'objectif initial, qui est seulement de lister toutes les instructions exécutées. Si on veut faire plus ça va devenir trop compliqué. Les boucles aussi sont gênantes, particulièrement les temporisations avec un compteur de plusieurs milliers de boucles. L'appel répété à la même routine crée aussi beaucoup de lignes pour rien. Mais une trace n'est qu'un outil parmi d'autres et ne peut à lui seul remplacer toutes les techniques de mise au point des programmes. Je ne souhaite pas le rendre trop compliqué.

Dans un premier temps je vais seulement éviter de répéter des lignes successives identiques (CWAI et SYNC) et ajouter les banques mémoire (vidéo, RAM et ROM) à la suite des registres.
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 5947
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par __sam__ »

Tiens j'ai trouvé un usage très pratique de cette fonctionnalité pour un de mes projets:

Code : Tout sélectionner

awk '{print $1}' dcmoto_trace.txt | sort | uniq -c | sort -n
Pour ceux qui sont perplexes :shock: et se demandent ce que ca fait, l'explication est par .
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Daniel
Messages : 13926
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par Daniel »

A l'usage la trace se révèle bien utile mais difficile à exploiter manuellement à cause de sa taille. Développer des outils pour l'analyser est la meilleure façon d'en tirer parti.

En l'utilisant on s'aperçoit qu'il y a beaucoup de texte inutile dans chaque ligne à la suite de l'instruction (valeurs de tous les registres et numéros des banques mémoire). Je me demande s'il ne faudrait pas afficher les valeurs uniquement si elles ont changé par rapport à la ligne précédente ?

Les boucles de temporisation qui se répètent des dizaines de milliers de fois sont aussi un peu pénibles. Il y a sûrement moyen de faire un post-traitement pour enlever ce qui n'a aucun intérêt. Il faudrait y réfléchir...
Daniel
L'obstacle augmente mon ardeur.
__sam__
Messages : 5947
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [DCMOTO] Amélioration de la fonction "Trace"

Message par __sam__ »

Pour moi les lignes hyper similaires sont un plus. Le moindre changement me saute au yeux alors que si on ne fait qu'afficher le registre qui change, il me faudra lire attentivement chaque ligne pour savoir si le changement concerne le registre qui m'intéresse. Avec le mode colonne, je n'ai qu'à me concentrer sur une seule colonne fixe. Cela m'est plus facile que des lignes de longueur variables.

Je ne sais pas si je suis clair, mais disons que la version "tabulée" est ce que je trouve le plus pratique.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Répondre