如何从步入德尔福提供的单位停止调试器?(How do I stop the debugger fro

2019-06-27 05:53发布

调试器步入上错误的源代码(如使用F7),但我想恢复正常的工作模式,其中德尔福基本的DCU(库)仅编入我的代码,并且源未在调试时使用。

例如,在我的程序错误,调试器步入Controls.pas,到TControl.Click 。 通常情况下(安装后右)是为Delphi到步骤超过这些方法。

我应该重新编译Controls.pas没有调试信息? 如果是这样,怎么样?


我延长了这一话题的更多信息,以便更好地理解:

我们使用的Delphi6教授有什么问题,鼠标(系统错误代码5)。 因此,我们要重新编译以Controls.pas更换鼠标位置的getter代码。 然后:

  1. 我创建了一个文件夹的那样: “C:\ d \ COMMON \ Delphi_Patches \ Delphi_6 \”
  2. 我把原来Controls.pas进去。
  3. 我修改了Controls.pas,替换的位置的吸气剂的代码。
  4. 我设置了德尔福的库路径,设置第一个文件夹“C:\ d \ COMMON \ Delphi_Patches \ Delphi_6 \”

通过这些步骤,我可以编译和鼠标安全代码的源代码。

好吧,但随后的德尔福每次步入Controls.pas上F7,和任何异常 - 这是非常“angermaker”的事情。

我去掉了“Controls.pas”从库路径没有关系 - 再调试器发现原来的“Controls.pas”它,并打开它... :-(

我们没有任何码使用“使用调试DCU-S”。

我试图从编译器选项删除“调试信息”,但不管它是,德尔福是打开原始Controls.pas ...

所以,我的方式搜索到德尔福不踏进“Controls.pas”,而是用我的DCU ...

我希望这提供更好的上下文来理解这个问题。

Answer 1:

我认为你需要SHIFT + CTRL + F11(工具/选项),然后在编译器中,取消选中“使用调试DCU” ......那么,如果发生异常,它不会破入RTL或VCL来源。



Answer 2:

既然你自己编译一个Delphi单元的版本,您可以禁用该单元调试信息。 添加{$D-}于所讨论的单元(一个或多个)的源代码。



Answer 3:

当我看到的解决方案是:

  1. 创建一个项目只应用上的新Controls.pas。

  2. 在编译器选项取消设置“调试信息”选项。

  3. 建立DCU

  4. 把DCU成库文件夹

  5. 隐藏这个库文件夹的新Controls.pas。

WITE这一招,我不能“步入” controls.pas。

问候:DD



Answer 4:

我曾与德尔福XE8此相同的问题。

您可以取消勾选“项目>>选项>>编译>>使用调试.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>


文章来源: How do I stop the debugger from stepping into Delphi-supplied units?