我想在我的应用程序中使用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.
我已阅读文档,但无济于事,并发现其他人遇到过类似的问题,但尚未发布解决方案。
有解决方案吗?
答案 0 :(得分:24)
DebugView
工具运行正常;只确保直接启动你的应用程序(没有附带Delphi IDE或其他调试器)。
无论如何,查看Delphi应用程序的OutputDebugString输出的自然方法是使用Delphi IDE和Event Log
窗口。
答案 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版本中,我必须启用"输出消息"选项下:
工具>选项>调试器选项>事件日志
我不记得禁用它。