调试器在错误的源代码中步入(如 F7 ),但我想恢复正常工作模式,其中Delphi基本DCU(库)只编译成我的代码,并且源不用于调试。
例如,在我的程序中出现错误时,调试器将步入Controls.pas,进入TControl.Click
。正常情况(安装后正确)是Delphi跳过这些方法的。
我应该在没有调试信息的情况下重新编译Controls.pas吗?如果是这样,怎么样?
我通过附加信息扩展这个主题,以便更好地理解:
我们使用Delphi6教授鼠标有什么问题(系统错误代码5)。 因此,我们要重新编译为Controls.pas以替换Mouse Position getter代码。 然后:
通过这些步骤,我可以使用鼠标安全代码编译源代码。
好的,但随后德尔福每次都会在F7上进入Controls.pas,并且在任何例外情况下 - 这都是非常“愤怒”的事情。
无论我从库路径中删除了“Controls.pas” - 然后调试器为它找到原始的“Controls.pas”,然后打开它......: - (
我们不在任何代码中使用“Use Debug DCU-s”。
我试图从编译器选项中删除“Debug Information”,但不管怎么说,Delphi打开原来的Controls.pas ......
所以我搜索到Delphi的方式不要进入“Controls.pas”,而是使用我的dcu ......
我希望这能为解决问题提供更好的背景。
答案 0 :(得分:8)
我认为你需要 Shift + Ctrl + F11 (工具/选项)然后在编译器 ,取消选中“使用调试DCU”...然后,如果发生异常,它将不会进入RTL或VCL源。
答案 1 :(得分:3)
由于您正在编译自己的Delphi版本,因此可以在该单元中禁用调试信息。将{$D-}
添加到相关单元的源代码中。
答案 2 :(得分:2)
我认为解决方案是:
创建一个仅使用新Controls.pas。
取消设置编译器选项中的“调试信息”选项。
build dcu
将dcu放入库文件夹
从此库文件夹中隐藏新的Controls.pas。
我不能“进入”controls.pas。
问候:dd
答案 3 :(得分:0)
我在Delphi XE8上遇到了同样的问题。
您可以取消选中"项目>>选项>>编译>>使用debug .dcus"它将继续跟踪系统单元等。
我发现停止此操作的最佳方法是打开Application.dproj文件 - 该文件是XML格式。在其中,您可以按如下方式更改设置:
<PropertyGroup Condition="'$(Cfg_1_Win32)'!=''">
<DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime> <--- note false
<DCC_DebugDCUs>false</DCC_DebugDCUs>
<VerInfo_Locale>1033</VerInfo_Locale>
<VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo>
<DCC_RemoteDebug>false</DCC_RemoteDebug>
</PropertyGroup>