我们已经构建了一个使用包和组件的应用程序。当我们调试应用程序时,IDE中的“事件日志”通常会显示我们的BPL正在加载而没有调试信息(“无调试信息”)。这没有意义,因为我们所有的包和EXE都是用调试构建的。调试时Delphi应用程序有“无调试信息”
_(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个项目,全部建成与运行pacakges:
- Core.bpl
- Components.bpl
- Plugin.bpl(同时使用#1 &#2)
- MainApp.exe(使用#1)
个问题观察
1)很多次,当我们调试中,Components.bpl装有调试信息,但在“局部变量”窗口中的所有值均为空白。如果将鼠标悬停在代码中的变量上,则不会显示弹出窗口,并且“评估”窗口也不显示任何内容(“结果”窗格始终为空)。
2)有时,事件日志会显示各种BPL的“无调试信息”。例如,如果我们激活Plugin.bpl项目并将其设置为Run |参数的主机应用程序为MainApp.exe,然后按F9,除了Plugin.bpl模块外,所有模块似乎都加载了“Has Debug Info”。加载时,事件日志显示“无调试信息”。但是,如果我们关闭应用程序并立即按F9,它将再次运行而不重新编译任何内容,并且这次Plugin.bpl加载了调试(“有调试信息”)。
问题
1)什么会导致 “局部变量” 窗口不显示值是多少?
2)为什么在BPL符合调试和所有调试文件(dcu,map等)可用时,BPL有时会加载没有调试信息?
结合BPLs摆脱问题不是一个好的解决方案。想象一下,如果您拥有数百个动态包,则无法将其合并为一个BPL。 – 2012-10-05 02:02:43
@ChauCheeYang - 我们有几十个其他BPL。造成这个问题的只是这两者的分离。在我们的例子中,将这两者结合是可以接受的,而将其他几十个分开......这可能与Components.bpl有很大关系,这很大程度上取决于Core.bpl。 – 2012-10-05 02:07:13
您是否对'debug'和'release'配置使用optset reference? – 2012-10-05 08:29:15