Question

Je suis depuis longtemps Delphi dev et dans le passé, j'utiliser un outil tiers pour l'enregistrement et le débogage tout en développant (appelé Smart inspection) mais maintenant que je l'ai mis à jour à Delphi XE Je veux essayer d'utiliser l'EDI pour débogage.

Ma question est, étant donné une fonction comme

procedure MyFunction;
var
    str : string;
begin
    str := 'Foo';
    //Debug, show value of str?
    str := AnotherFunction(str);
    //Debug, show value of str?
end;

comment puis-je déboguer et obtenir la valeur de str, sans faire des choses stupides comme     ShowMessage (str);

s'il y a une vidéo quelque part (ou article), alors je suis plus heureux de lire.

Est-il possible de regarder / sortie la valeur des variables.

Était-ce utile?

La solution

Eh bien, Delphi XE est livré avec l'exploitation forestière CodeSite, mais je reçois le sentiment que vous parlez du débogueur lui-même.

Si vous placez un point d'arrêt dans une routine, il se brisera au débogueur quand il frappe. De là, vous avez un volet Variables locales et un volet Montres sur le côté gauche de l'IDE. Les variables locales montreront la valeur de toutes les sections locales et Montres vous permet de définir des expressions dont la valeur qu'il gardera la trace.

Vous pouvez également obtenir quelque chose de semblable à une montre, mais avec des informations plus détaillées (en particulier pour les types structurés tels que les objets) à l'aide d'inspecter (Alt-F5). En outre, l'Évaluation / Modifier (Ctrl-F7) vous permettra de taper dans les expressions et les évaluer. Il est pas tout à fait aussi détaillée que Inspecter, mais il vous donne beaucoup plus de flexibilité.

Si vous familiariser avec ces outils, vous trouverez le débogage beaucoup plus facile.

Autres conseils

Si vous voulez utiliser l'IDE Debugger seulement, puis procédez comme suit:

  • mettre un point d'arrêt quelque part
  • faites un clic droit sur le cercle breakpointr et choisissez « Propriétés des points d'arrêt ... »
  • appuyez sur le bouton "Avancé" pour afficher plus d'options
  • décocher la case "Break"
  • puis utilisez les zones d'édition "message du journal" et "expression Eval" pour entrer des valeurs de trace

Ces messages seront envoyés au volet débogueur « Event Log ». Faites un clic droit sur le volet et choisissez « Propriétés ». Là, vous pouvez filtrer ( "Messages") / Hilight ( "Couleurs") les messages de trace que vous whish.

1) Vous pouvez utiliser la fonction OutputDebugString à chaîne de sortie à la fenêtre de débogage

2) Vous pouvez utiliser CodeSite Express. Je recommande la vidéo de CodeRage 5 comme point de départ pour l'utilisation CodeSite

D'autres réponses sont correctes.

Ma technique préférée personnelle (même que la réponse par da-soft) est de créer un point d'arrêt, qui enregistre un message au journal des événements, contenant une valeur que je veux ouvert une session, et ne fait pas « casser » (c'est , l'exécution se poursuit sans vous frapper l'icône Exécuter). Ensuite, chaque fois que cette ligne de code est atteinte, je reçois mon message et mes valeurs dans le journal. Depuis que je peux revenir en arrière et lire l'histoire, ainsi que de voir les valeurs actuelles, je trouve cela plus utile que de simplement utiliser la fenêtre Espion du débogueur.

Mais depuis Delphi XE comprend CodeSite, vous pouvez aller bien au-delà de l'évaluation dans l'expression des points d'arrêt fait pour vous. Code du site exige cependant que vous modifiez votre code pour ajouter un peu de journalisation. Mais il est beaucoup mieux qu'une boîte de message.

Vous pouvez également utiliser OutputDebugString (PChar (s)) pour produire une chaîne au débogueur. Comme il peut contenir tout ce que vous voulez, il est une très belle façon de debug mais pas montrer des choses à l'utilisateur final.

Dans plusieurs de mes applications, j'ai un tampon de trace spéciale, qui est circulaire (qui est, il ne conserve que les derniers quelque 500 lignes). Chaque fois que je vois un problème, non seulement j'obtenir une trace de la pile, je sauve également que le journal de suivi en mémoire, j'ai donc un peu d'histoire sur ce qui se passait juste avant mon problème.

Vous pouvez également consulter la href="http://log4delphi.sourceforge.net/" Log projet 4 Delphi .

Je préfère des notes de débogage. Après avoir rompu le débogueur déplacez votre souris sur le « str » partout dans votre code et vous verrez sa valeur actuelle. vous pouvez également mettre en évidence une déclaration par une souris et l'évaluer. Par exemple highlight "AnotherFunction (str)" et placez votre souris dessus.

Rien de mal à l'un des autres réponses, mais je voulais juste ajouter ces fonctions utiles.

procedure DebugString ( const s : string ) ; overload ;
begin
  {$IFDEF DEBUG}
  OutputDebugString ( PChar ( s ) ) ;
  {$ENDIF}
end ;

procedure DebugString ( const s : string ; args : array of const ) ; overload ;
begin
  {$IFDEF DEBUG}
  OutputDebugString ( PChar ( Format ( s , args ) ) ) ;
  {$ENDIF}
end ;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top