加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi 中OutputDebugString 函数的妙用(使用DebugView或者Pasc

发布时间:2020-12-15 09:53:45 所属栏目:大数据 来源:网络整理
导读:? 原文地址?https://www.peganza.com/delphi-and-outputdebugstring.html 曾经想要实时监控您的Delphi应用程序,并能够查看日志消息吗? 当然,您始终可以在RAD Studio IDE中以完全调试模式运行。 另一种方法是输出日志消息,例如输出到文本文件。 您还可以

?

原文地址?https://www.peganza.com/delphi-and-outputdebugstring.html

曾经想要实时监控您的Delphi应用程序,并能够查看日志消息吗?当然,您始终可以在RAD Studio IDE中以完全调试模式运行。另一种方法是输出日志消息,例如输出到文本文件。您还可以使用OutputDebugString函数。

这种方法的一个优点是它尽可能少地影响您的应用程序。您不必关心文件处理。只需调用一个函数。

OutputDebugString函数在Win32 API中的RTL单元Winapi.Windows中定义。

你只需从你的代码中调用它,如下所示:

1
2
3
4
5
6
7
8
9
10
11
..
uses
?? Winapi . Windows;
..
var?
?? Msg : string ;
begin?
?? OutputDebugString( ‘This is my message‘ );
?? Msg := ‘This is another log message‘ ;
?? OutputDebugString( PChar (Msg));
..

如果重复或循环调用OutputDebugString,可能会导致一些性能开销。因此,请确保您的发布版本中不包含对OutputDebugString的调用。要避免它,您可以使用条件编译指令,如:

1
2
3
4
5
..
?? (*$IFDEF ODS*)
?? OutputDebugString( ‘This is my message‘ );
?? (*$ENDIF*)
..

只有在想以这种方式记录消息时才激活编译指令“ODS”。另外,考虑为OutputDebugString调用创建一个包装函数,这样您的代码将更易于阅读和维护。像这样的东西:

1
2
3
4
5
6
procedure? DebugODS( const? Msg : string );
begin
?? (*$IFDEF ODS*)
?? OutputDebugString( PChar (Msg));
?? (*$ENDIF*)
end ;

如果从RAD Studio IDE中运行,日志消息将显示在输出窗口中。

但是如果你独立运行,很有可能使用SysInternals(Microsoft)提供的免费DebugView应用程序(dbgview.exe)。来自其网页的信息:

DebugView是一个应用程序,它允许您监视本地系统或网络上可通过TCP / IP访问的任何计算机上的调试输出。它能够显示内核模式和Win32调试输出,因此您不需要调试器来捕获应用程序或设备驱动程序生成的调试输出,也不需要修改应用程序或驱动程序以使用非标准调试输出API。


上图显示了Pascal Analyzer应用程序的一些示例调试输出

正如您在屏幕截图中看到的那样,消息的前缀是时间戳和进程ID。阅读有关DebugView的更多信息并在此处下载

https://www.cnblogs.com/xalion/p/9792021.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读