zoukankan      html  css  js  c++  java
  • Delphi和OutputDebugString

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

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

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

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

    ..
    uses
      Winapi.Windows;
    ..
    var 
      Msg : string;
    begin 
      OutputDebugString('This is my message');
      Msg := 'This is another log message';
      OutputDebugString(PChar(Msg));
    ..

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

     
    ..
      (*$IFDEF ODS*)
      OutputDebugString('This is my message');
      (*$ENDIF*)
    ..

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

    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.peganza.com/delphi-and-outputdebugstring.html

  • 相关阅读:
    ZT 二叉树先序,中序,后序遍历非递归实现
    二叉树的遍历(一)
    Z :彻底了解指针数组,数组指针以及函数指针 [复
    ZT 复杂的函数指针例子分析 2008
    D:hunting2014小题目字符串倒序
    本周实验的PSP0过程文档
    构建之法阅读笔记02
    第二周学习进度
    实现自动生成30道四则运算题目(2)
    实现自动生成30道四则运算题目
  • 原文地址:https://www.cnblogs.com/kinglandsoft/p/10112045.html
Copyright © 2011-2022 走看看