我正在使用 Delphi 2010,我想知道是否有一种方法可以跟踪项目中的代码,而无需跟踪对包含的 VCL 的调用。
For example - you put in a breakpoint and then use Shift+F7 to trace through line-by-line. Now you run into a call to some lengthy procedure in a VCL - in my case it's often a Measurement Studio or other component that draws the doodads for a bunch of I/O, OPC, or other bits. At any rate, what happens is that the debugger hops out of the active source file, opens the component source, and traces through that line by line. Often this is hundreds or thousands of lines of code I don't care about - I just want to have it execute and return to the next source line in MY project.
显然,您可以通过在外部调用的每个实例周围设置断点来实现此目的,但通常断点太多,无法实现这一点 - 每次我想单步执行一段代码时,我都会花一个小时设置一百个断点。
有没有可以做到这一点的设置或工具?允许人们跟踪项目内的代码,同时默默地执行项目外部的代码吗?
调试器不会单步执行没有调试信息的单元,因此目标是使编译器忽略您不感兴趣的单元中的调试信息。
将您的库单元放入单独的库项目中。这使您能够为这些单元进行单独的编译设置,而不会影响your项目。在不启用调试信息的情况下编译库。然后从您的项目中删除这些库单元。您可以继续使用它们,但它们将不再属于您的项目。
这里的一个重要方面是DCU 应驻留在与源代码不同的目录中。如果编译器找到 DCU 并且碰巧在同一文件夹中看到源代码,那么当您确实不希望重新编译该代码时,它可能会重新编译该代码。将项目的“DCU 输出文件夹”设置为默认值以外的文件夹。
要真正做到这一点,您可以执行 VCL 的操作并编译两个不同版本的库。编译一个带调试信息的,一个不编译的,并将编译后的文件放在不同的目录中。将包含调试版本的目录添加到 Delphi 配置中;那里应该已经列出了一个包含 Delphi 提供的调试 DCU 的文件夹。
当您设置两个不同的版本时,您可以自己选择是否要单步执行库代码。只需切换“使用调试 DCU”选项在您的项目设置中。当您切换该设置时,Delphi 将自动在搜索路径中添加和删除调试版本文件夹。
请注意,即使您的库单元有一个单独的库项目,您也不需要链接或分发该项目生成的 DLL 或包。您可以继续直接在 EXE 项目中使用 DCU 文件。您只需设置单独的项目,以便可以为这些单元选择不同的编译设置。将库项目的 DCU 输出文件夹添加到 EXE 项目的搜索路径中,您可以直接继续使用这些单元,而无需分发库项目的 DLL 或包。
IDE 可能会尝试自动将新目录添加到搜索路径。不要容忍这样的事情。如果其中有 IDE 为您添加的源目录,而您不希望它存在于此,请随时将其删除。 IDE 只是想提供帮助,但它不知道您计划拥有单独的源文件夹和编译文件夹。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)