5

调试器在出现错误时会进入源代码(例如 with F7),但我想恢复正常工作模式,其中 Delphi 基本 DCU(库)仅编译到我的代码中,源代码不用于调试。

例如,在我的程序中出现错误时,调试器将进入 Controls.pas,进入TControl.Click. 正常情况(安装后)是 Delphi 跳过这些方法。

我应该在没有调试信息的情况下重新编译 Controls.pas 吗?如果是这样,怎么做?


我用附加信息扩展了这个主题,以便更好地理解:

我们使用 Delphi6 Prof. 鼠标有什么问题(系统错误代码 5)。所以我们要重新编译到 Controls.pas 来替换 Mouse Position getter 代码。然后:

  1. 我为它创建了一个文件夹:“c:\D\Common\Delphi_Patches\Delphi_6\”
  2. 我把原来的 Controls.pas 放进去。
  3. 我修改了 Controls.pas,替换了位置获取器代码。
  4. 我设置了Delphi的库路径,将第一个文件夹设置为“c:\D\Common\Delphi_Patches\Delphi_6\”

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

好的,但是Delphi每次都会在F7上进入Controls.pas,并且在任何例外情况下 - 这是非常“愤怒”的事情。

不管我从库路径中删除了“Controls.pas” - 然后调试器正在为它找到原始的“Controls.pas”,然后打开它...... :-(

我们不在任何代码中使用“使用调试 DCU-s”。

我试图从编译器选项中删除“调试信息”,但没关系,Delphi 会打开原始的 Controls.pas ...

所以我搜索Delphi的方式不要进入“Controls.pas”,而是使用我的dcu ...

我希望这为理解问题提供了更好的背景。

4

4 回答 4

8

我认为您需要Shift++ (工具/选项)然后在CtrlCompiler,取消选中“使用调试 DCU”...然后如果发生异常,它不会闯入 RTL 或 VCL 源。F11

于 2012-08-22T14:47:37.023 回答
4

由于您正在编译自己的 Delphi 单元版本,因此您可以禁用该单元中的调试信息。添加{$D-}到相关单元的源代码中。

于 2012-12-10T17:53:22.873 回答
2

正如我所见,解决方案是:

  1. 创建一个仅使用新 Controls.pas 的项目。

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

  3. 构建 dcu

  4. 将 dcu 放入库文件夹

  5. 从此库文件夹中隐藏新的 Controls.pas。

记住这个技巧,我不能“进入”controls.pas。

问候:dd

于 2012-10-05T08:25:34.337 回答
0

我对 Delphi 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>
于 2017-08-28T06:57:57.833 回答