Delphi应用程序在调试时有“无调试信息”

前端之家收集整理的这篇文章主要介绍了Delphi应用程序在调试时有“无调试信息”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们已经构建了一个使用包和组件的应用程序.当我们调试应用程序时,IDE中的“事件日志”通常显示我们的BPL正在加载,没有调试信息(“无调试信息”).这没有任何意义,因为我们的所有包和EXE都是使用调试构建的.
_(each project) | Options | Compiling_
[ x ] Assertions
[ x ] Debug information
[ x ] Local symbols
Symbol reference info = "Reference info"
[   ] Use debug .dcus
[ x ] Use imported data references

_(each project) | Options | Linking_
[ x ] Debug information
Map file = Detailed

我们有4个项目,全部使用运行时间计划构建:

> Core.bpl
> Components.bpl
> Plugin.bpl(同时使用#1&#2)
> MainApp.exe(使用#1)

观察到问题

1)当我们调试很多次,Components.bpl加载了调试信息,但是“局部变量”窗口中的所有值都为空.如果将鼠标悬停在代码中的变量上,则没有弹出窗口,“评估”窗口也不显示任何内容(“结果”窗格始终为空).

2)有时,事件日志显示各种BPL的“无调试信息”.例如,如果我们激活Plugin.bpl项目并将其设置为Run |参数的主机应用程序成为MainApp.exe,然后按F9,除了Plugin.bpl模块,所有模块似乎都加载了“有调试信息”.加载时,事件日志显示“无调试信息”.但是,如果我们关闭应用程序并立即按F9,它将再次运行它而不重新编译任何东西,此时Plugin.bpl加载了debug(“具有调试信息”).

问题

1)什么会导致“本地变量”窗口不显示值?

2)为什么当BPL符合调试和所有调试文件(dcu,map等)可用时,为什么BPL有时加载没有调试信息?

解决方法

我会用它来描述我的问题.

我使用LoadPackage函数动态加载包.

我可以在SysInternals.com进程监视器中看到packagename.DCP在LoadPackage处理完成后开始读取,没有文件I / O失败,没有尝试在错误的地方找到它,没有任何可疑.所以也许在DCP中有一些构造使IDE调试器变得坚果.我很久以前Turbo Debugger可用于Delphi.

BTW,同样是packagename.RSM是一个创建这样的.

然后(在断点或步进跟踪暂停),我打开查看/调试Windows /模块,看到最后一个模块是我的 – 它有空的“符号信息”单元格.我右键单击它,选择“重新加载符号”操作 – 在这里,从现在起,我可以调试.

PS. Dunno,如果这将帮助我调试初始化部分,尽管 – 希望“打破负载菜单项将工作,即使动态的LoadPackage调用

PPS.它确实工作,甚至跨IDE重新启动.所以现在我在BPL加载cpu查看警报,我打CTRL ALT M,滚动到底部找到我的BPL,r点击重新加载符号,按Enter,然后关闭模块和cpu视图,并触击F9(运行).初始化部分完成后,我再次通过cpu视图提醒 – 只有少数JMP在退出LoadPackage之前 – 所以我再次关闭cpu View和stike F9.相当繁琐,但仍然比IDE重新启动.

原文链接:https://www.f2er.com/delphi/102426.html

猜你在找的Delphi相关文章