delphi - Cómo ver la salida de OutputDebugString?
debugview (5)
CnWizards contiene una herramienta, CnDebugViewer.exe, que puede capturar OutputDebugString (se debe ejecutar como administrador en Windows 7).
No como DbgView, CnDebugViewer puede crear pestañas separadas para diferentes aplicaciones.
CnPack contiene una unidad, CnDebug.pas. Usando esta unidad, puede rastrear objetos tipeados, colecciones, excepciones, memdump, etc. Con CnDebug.pas, también puede configurar si arranca automáticamente CnDebugViewer, si volcar a un archivo mientras envía mensajes de depuración, etc.
Quiero usar OutputDebugString()
en mi aplicación y luego tengo la opción de mostrarlo en un visor por separado cuando la aplicación se implementa en el campo.
Es decir, no quiero tener que cambiar una bandera y reconstruir mi .exe para activar y desactivar la depuración.
Buscando en Google, parece que DebugView debería manejar eso, pero ni él ni TraceTool muestran ningún resultado de este código.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
OutputDebugString(PChar(''Hello, wurld''));
end;
end.
He leído la documentación, sin éxito, y veo que otros han tenido problemas similares, pero no han publicado una solución.
¿Hay una solución?
En mi versión de XE5, tuve que habilitar la opción "Mensajes de salida" en:
Herramientas> Opciones> Opciones del depurador> Registro de eventos
No recuerdo haberlo deshabilitado.
La herramienta DebugView
funciona bien; solo asegúrese de iniciar su aplicación directamente (sin el Delphi IDE u otro depurador conectado).
De todos modos, la forma natural de ver la salida de OutputDebugString para una aplicación Delphi es usar Delphi IDE y la ventana del Event Log
.
Un problema con el uso de OutputDebugString es que otros programas también pueden estar usándolo, saturando su registro: Depuración de llamadas OutputDebugString en Delphi .
Puede usar CodeSite Express, que nos ha complacido en el uso diario: http://www.raize.com/devtools/codesite/Default.asp .
GExperts tiene un visor de depuración y una unidad que agregue a su aplicación que hará esto por usted, incluso en XE2 Starter. Consulte la unidad DebugIntf
y la aplicación GExpertsDebugWindow.exe
que incluye. Estos funcionan bajo XE2 Starter (y prácticamente todas las otras versiones de Delphi).
GExperts también incluye montones de otras mejoras de IDE y editor que son geniales y, por supuesto, han existido por siempre, por lo que son herramientas bastante sólidas.