簡體   English   中英

如何阻止調試器進入Delphi提供的單元?

[英]How do I stop the debugger from stepping into Delphi-supplied units?

調試器在錯誤的源代碼中步入(如F7 ),但我想恢復正常工作模式,其中Delphi基本DCU(庫)只編譯到我的代碼中,並且源不用於調試。

例如,在我的程序中出現錯誤時,調試器正在進入Controls.pas,進入TControl.Click 正常情況(安裝后)是Delphi跨越這些方法的。

我應該在沒有調試信息的情況下重新編譯Controls.pas嗎? 如果是這樣,怎么樣?


我通過附加信息擴展這個主題,以便更好地理解:

我們使用Delphi6 Prof. Mouse有什么問題(系統錯誤代碼5)。 因此,我們要重新編譯為Controls.pas以替換Mouse Position getter代碼。 然后:

  1. 我為它創建了一個文件夾:“c:\\ D \\ Common \\ Delphi_Patches \\ Delphi_6 \\”
  2. 我將原始的Controls.pas放入其中。
  3. 我修改了Controls.pas,取代了位置getter代碼。
  4. 我設置了Delphi的Library路徑,將第一個文件夾設置為“c:\\ D \\ Common \\ Delphi_Patches \\ Delphi_6 \\”

通過這些步驟,我可以使用鼠標安全代碼編譯源代碼。

好的,但隨后德爾福每次都會在F7上進入Controls.pas,並且在任何例外情況下 - 這都是非常“憤怒”的事情。

無論我從庫路徑中刪除了“Controls.pas” - 然后調試器為它找到原始的“Controls.pas”,然后打開它...... :-(

我們不在任何代碼中使用“Use Debug DCU-s”。

我試圖從編譯器選項中刪除“Debug Information”,但不管怎么說,Delphi打開原來的Controls.pas ...

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

我希望這能為解決問題提供更好的背景。

我認為您需要Shift + Ctrl + F11 (工具/選項)然后在編譯器中 ,取消選中“使用調試DCU”...然后,如果發生異常,它將不會進入RTL或VCL源。

由於您正在編譯自己的Delphi版本,因此可以在該單元中禁用調試信息。 {$D-}添加到相關單元的源代碼中。

我認為解決方案是:

  1. 創建一個只使用新的Controls.pas的項目。

  2. 取消設置編譯器選項中的“調試信息”選項。

  3. 建立dcu

  4. 將dcu放入庫文件夾中

  5. 從此庫文件夾中隱藏新的Controls.pas。

我不能“進入”controls.pas這個技巧。

問候:dd

我在Delphi XE8上遇到了同樣的問題。

您可以取消選中“Project >> Option >> Compiling >> Use debug .dcus”,它將繼續跟蹤到System unit等等。

我發現阻止它的最好方法是打開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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM