首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Delphi中调试OutputDebugString调用

在Delphi中调试OutputDebugString调用
EN

Stack Overflow用户
提问于 2010-11-24 01:18:27
回答 2查看 3.7K关注 0票数 5

我在我的应用程序中有一些“流氓”的OutputDebugString调用,它打印出"T",但我不能只是定位它。

有没有可能以某种方式在OutputDebugString -function上设置断点并查看它是从哪里调用的?

我使用的是Delphi 2009。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-24 01:29:21

您的项目中有多少对OutputDebugString的调用?您可以使用"Find in Files“对话框来查找所有这些文件,如果它们不是太多,应该不会有问题。

否则,您当然可以使用搜索来替换所有的OutputDebugString(,并用raise Exception.Create(替换。

您还可以编写一个函数

代码语言:javascript
复制
procedure OutputDebugString(const Str: string);
begin
  raise Exception.Create(Str);
end;

在项目中所有其他单元都使用的单元中。如果仅在uses列表中的Windows.pas之后声明此新单元,则将使用此新函数而不是Windows.pas函数。

更新

是的,您可以在Windows.pas中放置断点。首先,在项目中,转到“项目选项”,并在“调试”下选择“使用调试DCU”。然后,您可以转到Windows.pas并在第30769行放置一个断点:

代码语言:javascript
复制
procedure OutputDebugString; external kernel32 name 'OutputDebugStringW';
票数 13
EN

Stack Overflow用户

发布于 2010-11-27 11:23:28

  • 运行您的应用程序。
  • 将其置于暂停状态。
  • 打开视图/调试窗口/模块窗口。
  • 搜索内核32.dll。双击它。
  • 搜索OutputDebugStringA。双击它。
  • CPU窗口打开。在第一行设置断点。
  • 搜索OutputDebugStringW。双击它。
  • CPU窗口打开。在第一行设置断点。

好了。

现在,从应用程序对OutputDebugString的任何调用都将在断点处中断。您还可以在断点属性中打开日志记录,以记录调用堆栈。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4258848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档