如何查看OutputDebugString的输出?

时间:2012-06-27 02:04:57

标签: delphi debugview outputdebugstring

我想在我的应用程序中使用OutputDebugString(),然后可以选择在现场部署应用程序时在单独的查看器中显示它。

也就是说,我不想更改标志并重建我的.exe来打开和关闭调试。

在Google上搜索,似乎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.

我已阅读文档,但无济于事,并发现其他人遇到过类似的问题,但尚未发布解决方案。

有解决方案吗?

5 个答案:

答案 0 :(得分:24)

DebugView工具运行正常;只确保直接启动你的应用程序(没有附带Delphi IDE或其他调试器)。

无论如何,查看Delphi应用程序的OutputDebugString输出的自然方法是使用Delphi IDE和Event Log窗口。

Enter image description here

Enter image description here

答案 1 :(得分:9)

GExperts有一个调试查看器和一个你添加到应用程序中的单元,即使在XE2 Starter中也能为你完成。请参阅DebugIntf单元及其包含的GExpertsDebugWindow.exe应用程序。这些工作在XE2 Starter(以及几乎所有其他版本的Delphi)下工作。

GExperts还包括很多其他很棒的IDE和编辑器增强功能,当然它们已经存在,所以它们是非常可靠的工具。

答案 2 :(得分:5)

CnWizards包含一个工具CnDebugViewer.exe,它可以捕获OutputDebugString(应该在Windows 7中以管理员身份运行)。

与DbgView不同,CnDebugViewer可以为不同的应用程序创建单独的选项卡。

CnPack包含一个单位CnDebug.pas。使用此单元,您可以跟踪类型化对象,集合,异常,memdump等。使用CnDebug.pas,您还可以设置是否自动启动CnDebugViewer,是否在发送调试消息时转储到文件等。

答案 3 :(得分:4)

使用OutputDebugString的一个问题是其他程序也可能正在使用它,使您的日志混乱:Debugging OutputDebugString calls in Delphi

您可以使用我们在日常使用中非常满意的CodeSite Express:http://www.raize.com/devtools/codesite/Default.asp

答案 4 :(得分:2)

在我的XE5版本中,我必须启用"输出消息"选项下:

工具>选项>调试器选项>事件日志

我不记得禁用它。