正确的 Delphi 编译器切换为在用户代码中停止,而不是在我的组件中停止

发布于 2024-09-01 10:19:27 字数 607 浏览 5 评论 0原文

我正在修改我们的 VCL 组件,以便最终用户的应用程序链接到我们的 dcu 文件,而不是每次都构建我们的源代码。我们一切正常,但我希望调试器在引发异常时停止在用户代码上。首先它会停在我们的 dcu 中并打开 CPU 窗口。我可以通过从 dcu 文件中删除调试信息来防止这种情况。但现在它仍然不会停止在用户代码中(就像 DevExpress 库和其他库一样)。

以下截屏视频是一个简短的示例。我第一次在 DevExpress 代码中引发异常,并且调试器在我的按钮事件中正确停止。第二次我在组件中引发异常,但调试器在调用堆栈上没有我的按钮事件,并且没有显示问题出在哪里。有什么想法吗?

http://screencast.com/t/NjhlOTRk

目前正在使用以下选项构建 DCU:

-$W+ -$D- -h -w -q

更新:我的组件和按钮事件之间的 TDataSet 方法似乎导致了这种行为。如果我改为调用表的直接方法,我会得到预期的行为。我猜我对此无能为力,但我仍然很好奇为什么会发生这种情况。

I'm modifying our VCL components so the end user's application links to our dcu files, instead of building our source code each time. We have everything working, but I want the debugger to stop on the user's code when an exception is raised. At first it would stop in our dcu and open the CPU window. I was able to prevent that by removing debug info from the dcu files. But now it still doesn't stop in the users code (like DevExpress libraries and others do).

The following screencast is a short example. The first time I cause an exception in the DevExpress code, and the debugger correctly stops in my button event. The second time I cause an exception in my components, but the debugger doesn't have my button event on the call stack, and doesn't show me where the problem was. Any ideas why?

http://screencast.com/t/NjhlOTRk

Currently building the DCU's with these options:

-$W+ -$D- -h -w -q

Update: The TDataSet methods in between my component and the button event seem to cause this behavior. If I instead call a direct method of my table, I get the expected behavior. I'm guessing there isn't anything I can do about this, but I'm still curious why it happens.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲凉≈ 2024-09-08 10:19:27

如果源代码是构建的而不是 dcu 的,则配置中存在问题。

dcus 应位于搜索路径中,源位于浏览路径中。

这样编译器就不可能不使用 DCU,并且您仍然可以进行调试。

If the sourcecode is build instead of dcu's, there is something wrong in the configuration.

The dcus should be in the search path, the source in the browse path.

This way it is not possible for the compiler to not use the DCUs, and you can still debug.

醉酒的小男人 2024-09-08 10:19:27

您是否尝试过设置/取消设置:
项目选项-> Delphi编译器->编译-> “使用 debug .dcus”(在“调试”小节中)

Have you tried setting/unsetting:
Project Options -> Delphi Compiler -> Compiling -> 'Use debug .dcus' (in the Debugging subsection)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文