OutputDebugString调试字符串输出及Delphi中调用显示最大字符长度限制为1024

OutputDebugString 是很常用的调试函数, 其作用是将指定的调试字符串, 在运行时输出到特定的位置, 以便我们能获知程序执行的情况. 其 MSDN: http://msdn.microsoft.com/en-us/library/windows/apps/aa363362(v=vs.85).aspx

其中比较重要的两点:

1. Applications should send very minimal debug output...

2. OutputDebugStringW converts the specified string based on the current system locale information and passes it to OutputDebugStringA to be displayed. As a result, some Unicode characters may not be displayed correctly.

在DELPHI XE2中使用发现了如下的bug:(当然导致这个故障的本身不是OutputDebugString函数本身,而是DelphiXE2 IDE问题所致。)

      偶然发现WIN32 API函数 OutputDebugString调试字符串在Delphi XE2 控制台(Event Log)输出有1023字节长度限制。超出的部分显示不出来。如果用Debugview来接收就不会缺少字符。挺遗憾!

小技巧:
    OutputDebugString(Format('MyDebug:%d%s',[600019,'XXXXXXString']));
然后在 DbgView 设置一个过滤:MyDebug:,只抓自己程序的输出,用起来就方便多了
Outputdebugstring是window下的api函数,支持unicode和ascii编码,可以在debug和release下显示信息
重要:
    Outputdebugstring使用包含头文件window.pas即可,调试程序时若在debugview下显示不了调试信息,则需要关闭其它的调试器,比如在XE2 IDE中按F9运行程序时,该Debug信息只能显示在Event log中。Debugview中则无法显示。如果要在Debugview中显示,则要用非调试模式运行。这个要记住,低于1024字符的输出是没有问题,比如一般的变量跟踪,太长的拼装SQL语句超过1024长度不行。

 

posted @ 2022-10-04 00:15  IT情深  阅读(189)  评论(0编辑  收藏  举报