Domanda

Sono uno sviluppatore Delphi da molto tempo e in passato utilizzo uno strumento di terze parti per la registrazione e il debug durante lo sviluppo (chiamato Smart Inspect), tuttavia ora che ho eseguito l'aggiornamento a Delphi XE voglio provare a utilizzare l'IDE per il debug.

La mia domanda è: data una funzione simile

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

Come posso eseguire il debug e ottenere il valore di STR, senza fare cose stupide come ShowMessage (STR);

se c'è un video da qualche parte (o un articolo), sono più che felice di leggerlo.

Esiste un modo per osservare/emettere in output il valore delle variabili.

È stato utile?

Soluzione

Bene, Delphi XE è dotato di registrazione CodeSite, ma ho la sensazione che si stia parlando il debugger stesso.

Se si inserisce un punto di interruzione in una routine, si romperà al debugger quando colpisce. Da lì, hai un riquadro variabili locali e un riquadro di orologi lungo il lato sinistro della IDE. Variabili locali mostreranno il valore di tutti i locali, e Orologi permette di impostare le espressioni il cui valore non mancherà di tenere traccia di.

Si può anche ottenere qualcosa di simile a un orologio, ma con informazioni più dettagliate (in particolare per i tipi strutturati come gli oggetti) usando Controllare (Alt-F5). Inoltre, il Evaluate / Modifica (Ctrl-F7) vi permetterà di digitare le espressioni e la loro valutazione. Non è del tutto come dettagliato come Ispezionare, ma ti dà molta più flessibilità.

Se a familiarizzare con questi strumenti, troverete il debug molto più facile.

Altri suggerimenti

Se si desidera utilizzare solo l'IDE debugger, quindi effettuare le seguenti operazioni:

  • mettere un qualche punto di interruzione
  • Fare clic destro sul cerchio breakpointr e scegliere "Proprietà punto di interruzione ..."
  • premere il pulsante "Avanzate" per visualizzare più opzioni
  • deselezionare "Break" casella di controllo
  • quindi usare "messaggio Log" e "eval espressione" le caselle di modifica per inserire i valori traccia

Tali messaggi verranno inviati al riquadro debugger "Registro eventi". Fare clic destro sul riquadro e selezionare "Proprietà". Ci si può filtrare ( "Messaggi") / hilight ( "Colori") i messaggi di traccia, come si whish.

1) È possibile utilizzare OutputDebugString Funzione per stringa di output di finestra di debug

2) È possibile utilizzare CodeSite Express. Vi consiglio video da CodeRage 5 come punto di partenza per l'utilizzo CodeSite

Altre risposte sono tutti corretti.

La mia tecnica preferita (lo stesso come la risposta da da-soft) è quello di creare un punto di interruzione, che registra un messaggio nel registro eventi, che contiene un valore che voglio collegato, e in realtà non "rompere" (vale a dire , l'esecuzione continua senza di te colpire l'icona Run). Poi ogni volta che riga di codice viene raggiunto, ho capito il mio messaggio, e miei valori nel registro. Dal momento che posso tornare indietro e leggere la storia, così come vedere i valori correnti, ho trovato questo più utile che semplicemente utilizzando la finestra di controllo del debugger.

Ma poiché Delphi XE include CodeSite, si può andare ben oltre ciò che la valutazione dell'espressione in punti di interruzione fa per voi. Site Code tuttavia richiede che si modifichi il codice per aggiungere un po 'di registrazione. Ma è molto meglio di una finestra di messaggio.

È inoltre possibile utilizzare OutputDebugString (PChar (s)) per l'uscita qualsiasi stringa al debugger. Dal momento che questo può contenere tutto quello che volete, è un bel modo per eseguire il debug, ma non mostra cose per l'utente finale.

In molte delle mie applicazioni, ho un buffer di traccia speciale, che è circolare (che è, esso mantiene solo l'ultimo 500 o giù di lì le linee). Quando mai vedo un problema, non solo posso ottenere una traccia dello stack, ho anche salvare che registro di traccia in memoria, quindi ho un po 'di storia su quello che stava succedendo poco prima il mio problema.

È inoltre possibile controllare il progetto Log 4 Delphi .

Preferisco i suggerimenti del debugger.Dopo aver interrotto il debugger, sposta il mouse su "str" ​​in un punto qualsiasi del codice e vedrai il suo valore corrente.Inoltre puoi evidenziare alcune affermazioni con il mouse e valutarle.Ad esempio, evidenzia "AnotherFunction(str)" e posiziona il mouse su di esso.

Niente di sbagliato con una qualsiasi delle altre risposte, ma volevo solo aggiungere queste funzioni utili.

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 ;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top