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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM