我们构建了一个应用程序,使用了包和组件。在调试该应用程序时,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会加载调试信息,但“本地变量”窗口中的所有值都为空。如果将鼠标悬停在代码中的变量上,则不会弹出任何内容,而Evaluate窗口也不显示任何内容(“结果”窗格始终为空)。
2) 有时事件日志会显示各种BPL的“无调试信息”。例如,如果我们激活Plugin.bpl项目并将其“运行|参数”的主机应用程序设置为MainApp.exe,然后按F9键,除了Plugin.bpl模块之外,似乎所有模块都加载了“Has Debug Info”。当它加载时,事件日志显示“无调试信息”。但是,如果我们关闭应用程序并立即按F9键,它将再次运行而无需重新编译任何内容,这次Plugin.bpl将加载调试信息(“Has Debug Info”)。
问题
1) 什么原因会导致“本地变量”窗口不显示值?
2) 为什么有时BPL会在编译时使用调试信息,而所有调试文件(dcu、map等)都可用时,仍然没有加载调试信息?
c:\RAD Studio\9.0\...
中的RTL/VCL,并且针对其他BPL版本运行和调试。在RTL内部调试、评估变量.classname等方面也带来了很多麻烦。我删除了那些遗留的全局BPL,并且在几个小时内这个问题没有再次出现。希望它不会再次发生,或者更加罕见。 - Arioch 'The