我正在修改我们的VCL组件,因此最终用户的应用程序链接到我们的dcu文件,而不是每次都构建我们的源代码。我们已经完成了所有工作,但是我希望调试器在引发异常时停止用户代码。首先它会在我们的dcu中停止并打开CPU窗口。我能够通过从dcu文件中删除调试信息来防止这种情况。但现在它仍然不会停留在用户代码中(如DevExpress库和其他人一样)。
以下截屏视频是一个简短的例子。我第一次在DevExpress代码中导致异常,并且调试器在我的按钮事件中正确停止。第二次我在我的组件中导致异常,但是调试器在调用堆栈上没有我的按钮事件,并且没有显示问题所在。有什么想法吗?
http://screencast.com/t/NjhlOTRk
目前使用以下选项构建DCU:
-$W+ -$D- -h -w -q
更新:我的组件和按钮事件之间的TDataSet方法似乎会导致此行为。如果我改为调用我的表的直接方法,我会得到预期的行为。我猜我没办法解决这个问题,但我仍然很好奇为什么会这样。
答案 0 :(得分:1)
如果构建源代码而不是dcu,则配置中存在错误。
dcus应位于搜索路径中,即浏览路径中的源。
这样编译器就不可能不使用DCU,你仍然可以调试。
答案 1 :(得分:0)
您是否尝试过设置/取消设置: 项目选项 - > Delphi编译器 - >编译 - > '使用debug .dcus'(在调试小节中)