我想在我的应用程序中使用OutputDebugString(),然后可以选择在应用程序部署到现场时在单独的查看器中显示它。
也就是说,我不想为了打开和关闭调试而更改标志并重新构建我的.exe。
谷歌一下,看起来DebugView应该可以处理这个问题,但是它和TraceTool都没有显示这段代码的任何输出。
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.我已经阅读了文档,但无济于事,并看到其他人也有类似的问题,但没有发布解决方案。
有解决方案吗?
发布于 2012-06-27 19:00:12
即使在XE2 Starter中,GExperts也有一个调试查看器和一个您添加到应用程序中的单元,它将为您完成此操作。请参阅DebugIntf单元及其包含的GExpertsDebugWindow.exe应用程序。它们可以在Delphi(以及几乎所有其他版本的XE2 )下工作。
GExperts还包括大量其他的集成开发环境和编辑器增强功能,这些功能非常棒,当然它们已经存在很久了,所以它们是非常可靠的工具。
发布于 2012-06-27 10:16:34
DebugView工具运行良好;只是要确保直接启动您的应用程序(没有附加Delphi IDE或其他调试器)。
无论如何,查看Delphi应用程序的OutputDebugString输出的自然方法是使用Delphi IDE和Event Log窗口。


发布于 2012-06-27 14:11:36
CnWizards包含一个名为CnDebugViewer.exe的工具,它可以捕获OutputDebugString (应该在Windows7中以管理员身份运行)。
与DbgView不同,CnDebugViewer可以为不同的应用程序创建不同的标签。
CnPack包含一个单元CnDebug.pas。使用此单元,您可以跟踪类型化的对象、集合、异常、内存转储等。使用CnDebug.pas,您还可以设置是否自动启动CnDebugViewer,是否在发送调试消息时转储到文件等。
https://stackoverflow.com/questions/11218434
复制相似问题