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 观察到问题 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重新启动. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |