(这只是一个例子,它当然可以发生在任何第三方库中)
如何告诉调试器“仅调试我的单元”(只有dpr文件中列出的pas文件?)
当然,有时调试库很有用,但在大多数情况下并非如此.
解决方法
>将所有第三方软件包中的DCU输出路径更改为与存储PAS文件的文件夹不同的文件夹.
>在调试模式下编译每个包一次,并将生成的DCU文件保存在文件夹中(例如,调试DCU).
>再次编译每个包,但这次是在发布模式下,并将生成的DCU文件保存在文件夹(例如Release DCU)中.
>转到Delphi选项并将释放DCU的路径添加到“库路径”.
>在Delphi选项中,将源文件的路径添加到“浏览路径”.
>在Delphi选项中,将调试DCU的路径添加到“Debug DCU path”.
这样,Delphi只会在编译项目时看到该第三方组件的发布DCU,因此调试器无法进入源代码.
另一方面,由于源路径包含在“浏览路径”中,您仍然可以通过Ctrl单击单元名称或在这些单元中定义的任何内容导航到IDE内的源代码.
如果要调试组件,可以转到“Project | Options | Delphi Compiler | Compiling”,并启用“Use debug .dcus”.这将迫使编译器使用“Debug DCU path”而不是“Library path”.
VCL的工作原理相同,通常在调试项目时不会进入VCL源代码,但如果启用“使用调试.dcus”,则也可以调试VCL源代码.
JVCL也以相同的方式组织其包和源代码.
编辑:如果你采取这种方法,并希望有代码浏览(Ctrl Click)工作;请注意,在编译软件包的发行版时,必须在“Project | Options | Delphi Compiler | Compiling”中将Symbol Reference Info设置为“Reference Info”;否则,Ctrl Click将不适用于这些单位.默认情况下,发布构建配置将符号引用信息设置为无.