IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

zTrace (DLL de débogage)


Sujet :

Contribuez

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 537
    Points : 938
    Points
    938
    Par défaut zTrace (DLL de débogage)
    zTrace

    Nom : zTrace3.png
Affichages : 121
Taille : 20,1 Ko

    zTrace est une petite DLL (11 Ko) qui permet d'afficher des informations de débogage dans une fenêtre popup et/ou un fichier texte.
    L'utilisation d'un thread distinct lui permet de fonctionner en parallèle de l'application que vous souhaitez déboguer.

    zTrace est très utile pendant le développement pour vérifier si un programme fonctionne correctement.
    Inspiré par l'API Trace de WinDev, la version Win32 originale a été écrite en PowerBASIC.

    Initialement, zTrace a été conçu pour déboguer mes propres DLL graphiques (GDImage et WinLIFT).
    Mais on peut l'utiliser aussi avec un EXE 32 ou 64-bit.

    zTrace utilise exclusivement l'API de bas niveau, car c'est le seul dénominateur commun aux différents langages que j'utilise.
    Le source est fourni en pur style SDK, comme documenté dans "Programming windows 5th edition" de Charles Petzold.

    zTrace fonctionne en mode UNICODE.

    Syntaxe d'utilisation :
    zTrace(L"Chaine à afficher en format UNICODE")

    Détail du paramètre :
    Une seule chaine unicode de type WCHAR, contenant l'information à afficher dans la fenêtre de trace.

    Fenêtre de trace :
    • L'information passée en paramètre est affichée sur la ligne suivante de la fenêtre zTrace.
    • La fenêtre de trace s'ouvre automatiquement lorsque zTrace est appelé. Par défaut, cette fenêtre s'ouvre dans le coin supérieur gauche de l'écran.
    • La fenêtre zTrace se ferme automatiquement lorsque vous fermez l'application en cours de débogage.

    Rapport zDebug.txt :
    • Fonctionne exactement comme la fenêtre zTrace, sauf que l'information est écrite dans un fichier texte.
    • Le rapport est automatiquement créé lorsque zDebug est appelé, il est enregistré dans le même dossier que l'application déboguée.
    • zDebug peut être utilisé seul ou combiné avec zTrace (lorsque l'option est cochée dans le menu contextuel).
    • zDebug est très pratique lorsque l'application déboguée se ferme de manière inattendue ou lorsque l'application a une durée de vie courte, ce qui ne vous laisse pas assez de temps pour lire ce qui est écrit dans la fenêtre zTrace.
    • Un nouveau zDebug.txt est créé chaque fois que vous démarrez une nouvelle session zDebug.

    Menu contextuel (clic droit sur la fenêtre de trace) :
    • Utiliser la barre de défilement horizontale, afficher ou masquer la barre de défilement horizontale.
    • Envoyer la sélection à l'imprimante, imprimer les lignes sélectionnées (ou toute la liste si aucune n'est sélectionnée).
    • Copier la sélection dans le presse-papiers, copier les lignes sélectionnées (ou toute la liste si aucune n'est sélectionnée) dans le presse-papiers.
    • Effacer le contenu, effacer le contenu de la fenêtre de trace.
    • Fenêtre de trace toujours au premier plan, ouvrir la fenêtre de trace au-dessus de toutes les autres fenêtres (y compris les fenêtres des autres applications).
    • Créer un rapport zDebug.txt, le rapport zDebug.txt est créé dans le dossier de l'application déboguée.
    • Enregistrer les coordonnées de la fenêtre, enregistrer la taille et la position de la fenêtre zTrace dans le registre lorsqu'elle est fermée. La prochaine fois, la fenêtre sera affichée en utilisant la taille et l'emplacement précédents.

    A titre d'exemple :
    Le fichier archive contient 2 projets (zTrace et MC64)
    MC64 est un projet GDImage/WinLIFT qui contient des controles graphiques spécifiques qui utilisent zTrace pour expliquer le fonctionnement de l'interface.

    Voici la fonction utilisée dans MC64 pour l'appel de zTrace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    long zTrace(IN WCHAR* sPtr) {
        long nRet = 0;
        static HMODULE hDll;
        if (hDll == 0) {
            if (sizeof(LONG_PTR) == 8) {
                hDll = LoadLibrary(L"zTrace64");
            } else {
                hDll = LoadLibrary(L"zTrace32");
            }
        }
        if (hDll) {
            long_proc(WCHAR*);
            static zProc hProc;
            if (hProc == 0) { hProc = (zProc)GetProcAddress(hDll, "zTrace"); }
            if (hProc) { nRet = hProc(sPtr); }
        }
        return nRet;
    }
    Interface spécifique de MC64

    Nom : MTC64.jpg
Affichages : 111
Taille : 191,3 Ko
    Fichiers attachés Fichiers attachés

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 893
    Points : 219 534
    Points
    219 534
    Billets dans le blog
    124
    Par défaut
    Bonjour,

    Intéressant. Si je comprends bien, c'est une bibliothèque, contenant une seule fonction `zTrace()`, permettant de logguer un message qui sera visible dans une fenêtre dédiée. Ai-je juste (ou suis-je un boulet ) ?
    Dans le cas où je ne me plante pas, j'ai du mal à voir l'utilité. Je veux dire, je pourrais très bien faire des printf() et avoir un résultat similaire dans le terminal. Ou bien, je pourrais utiliser le débogueur. Pourquoi pensez vous qu'il faille autre chose, que ces outils ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 537
    Points : 938
    Points
    938
    Par défaut
    zTrace fonctionne avec des versions release y compris des applications temps réel, et avec tous les languages que j'utilise.
    C'est surtout pratique pour tester des DLLs qui interagissent avec d'autres applications.

    https://www.codeproject.com/Articles...e-for-bit-only

    http://www.objreader.com/index.php?t....msg618#msg618

    https://depot.pcsoft.fr/resource.awp...6710952;ztrace

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 893
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 893
    Points : 219 534
    Points
    219 534
    Billets dans le blog
    124
    Par défaut
    J'ai donc sûrement mal compris. Lorsque je veux utiliser zTrace, il faut que j'ajoute des appels à la fonction zTrace, dans mon code, non ?
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 537
    Points : 938
    Points
    938
    Par défaut
    Bonjour,

    Oui, vous devez utiliser des appels à la fonction zTrace dans votre code à l'endroit ou vous voulez tester une valeur ou simplement afficher un message de type
    zTrace(L"Appel de MaFonction ligne 2036 est OK")
    Lorsque le code est débuggé, il suffit d'effacer tous les zTrace().
    L'avantage de fonctionner en mode Release est qu'on est certain d'avoir le même comportement dans l'EXE final, ce qui n'est pas le cas en mode Debug.
    C'est très pratique pour tester une DLL écrite en C/C++ avec un EXE écrit dans un autre langage.
    Dans mon cas : PowerBASIC, PureBasic, FreeBasic, Delphi, WinDev, et C/C++.

Discussions similaires

  1. [CR] Infos sur l'utilisation de dll
    Par step dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 09/08/2002, 11h35
  2. Declarer une dll Delphi ?
    Par DelphiCool dans le forum C++Builder
    Réponses: 2
    Dernier message: 26/07/2002, 10h07
  3. Débug de DLL
    Par Bayard dans le forum C++Builder
    Réponses: 3
    Dernier message: 22/07/2002, 15h08
  4. Equivalent à ExeName pour une DLL
    Par Smortex dans le forum Langage
    Réponses: 7
    Dernier message: 16/07/2002, 21h07
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo