Pregunta

Soy desarrollador de Delphi desde hace mucho tiempo y en el pasado uso una herramienta de terceros para registrar y depurar durante el desarrollo (llamada Smart Inspect); sin embargo, ahora que actualicé a Delphi XE quiero probar y usar el IDE para depurar.

Mi pregunta es, dada una función como

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

¿Cómo puedo depurar y obtener el valor de str, sin hacer cosas estúpidas como showmessage(str);

Si hay un vídeo (o un artículo) en alguna parte, estaré más que feliz de leerlo.

¿Hay alguna manera de observar/generar el valor de las variables?

¿Fue útil?

Solución

Bueno, Delphi XE viene con la tala CodeSite, pero tengo la sensación de que está hablando el propio depurador.

Si se coloca un punto de interrupción en una rutina, se romperá al depurador cuando se le pega. A partir de ahí, usted tiene un panel de variables locales y un panel de relojes a lo largo del lado izquierdo de la IDE. Las variables locales mostrarán el valor de todos los locales, y relojes le permite configurar expresiones cuyo valor va a seguir la pista.

También puede obtener algo similar a un reloj, pero con información más detallada (especialmente para los tipos estructurados como objetos) usando Comprobar (Alt-F5). Además, el Evaluar / Modificar (Ctrl-F7) le permitirá escribir en expresiones y evaluarlos. No es exactamente como se detalla como Inspeccionar, pero le da mucha más flexibilidad.

Si se familiarice con estas herramientas, encontrará la depuración mucho más fácil.

Otros consejos

Si desea utilizar el depurador IDE solamente, a continuación, haga lo siguiente:

  • poner un punto de interrupción en algún lugar
  • botón derecho del ratón sobre el círculo breakpointr y seleccione "Breakpoint Properties ..."
  • pulse el botón "Opciones avanzadas" para mostrar más opciones
  • desmarque "Break" casilla de verificación
  • a continuación, utilizar "mensaje de registro" y "expresión" Eval cuadros de edición para introducir valores traza

Estos mensajes se envían al panel depurador "Registro de eventos". Haga clic derecho sobre el panel y selecciona "Propiedades". Allí se puede filtrar ( "Mensajes") / hilight ( "colores") los mensajes de seguimiento a medida que instalacciones.

1) Se puede utilizar la función de OutputDebugString cadena de salida a la ventana de depuración

2) Puede utilizar CodeSite Express. Recomiendo vídeo desde CodeRage 5 como punto de partida para utilizar CodeSite

Otras respuestas son los correctos.

Mi técnica favorita (igual que la respuesta por da-blando) es crear un punto de interrupción, que registra un mensaje en el registro de eventos, que contiene un valor que desee registrar, y no "rompen" (es decir , la ejecución continúa sin ti golpear el icono Ejecutar). Entonces, cada vez que se alcanza línea de código, me sale mi mensaje, y mis valores en el registro. Desde que puedo volver atrás y leer la historia, así como ver los valores actuales, Me parece más útil que la mera utilización de la ventana de inspección del depurador.

Pero desde Delphi XE incluye CodeSite, se puede ir mucho más allá de lo que la evaluación de expresiones en los puntos de interrupción hace por usted. Código del lugar sin embargo requiere que modifique el código para añadir un poco de la tala. Pero es mucho mejor que un cuadro de mensaje.

También puede utilizar OutputDebugString (PChar (s)) para dar salida a cualquier cadena al depurador. Dado que esto puede contener lo que quiera, es una muy buena manera de depuración, pero no muestra cosas para el usuario final.

En muchas de mis aplicaciones, tengo una memoria intermedia de seguimiento especial, que es circular (es decir, se mantiene sólo los últimos 500 o más líneas). Cuando cada vez que veo un problema, no sólo puedo obtener una retraza de la pila, también, salvo el registro de seguimiento en memoria, así que tengo un poco de historia sobre lo que estaba pasando justo antes de mi problema.

También puede revisar el proyecto Log 4 Delphi .

Prefiero las sugerencias del depurador.Después de acceder al depurador, mueva el mouse a la "cadena" en cualquier parte de su código y verá su valor actual.También puedes resaltar alguna afirmación con el ratón y evaluarla.Por ejemplo, resalte "AnotherFunction(str)" y coloque el mouse sobre él.

No hay nada malo con cualquiera de las otras respuestas, pero yo sólo quería añadir estas funciones útiles.

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 ;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top