Visual Studio調試器指南---實時調試


在運行於 Visual Studio 之外的應用程序中發生異常或崩潰時,實時調試會自動啟用 Visual Studio。 這樣,您便可以在 Visual Studio 沒有運行時測試應用程序,並在出現問題時利用 Visual Studio 開始調試。

實時調試不適用於在可視化工具等本機應用程序中承載的托管代碼。 如果您在 Windows Server 2003 或 Windows 2000 SP3(或更高版本)中安裝 .NET Framework,那么,只有在計算機重新啟動后,才可以對在終端服務會話中通過受限用戶帳戶運行的進程使用實時調試。

使用實時調試

默認情況下,安裝 Visual Studio 時會啟用實時調試。啟用實時調試之后,您可以在 Visual Studio 之外調試應用程序。 如果發生崩潰或異常,將會出現一個對話框,其中顯示一條與下面類似的消息:在 terrarium.exe[3384] 中發生未經處理的異常(“System.TypeInitializationException”)

如果出現此對話框,您可以通過以下步驟開始調試。

發生錯誤時開始實時調試

  1. 在“實時調試”對話框中,在“可能的調試器”列表中,單擊“Visual Studio  新實例”或單擊已在運行的 Visual Studio 2010。

  2. 若要在以后發生崩潰時都自動使用 Visual Studio,請單擊“將當前選定的調試器設置為默認調試器”。

  3. 如果要選擇能夠調試的代碼類型,請單擊“手動選擇調試引擎”。 如果沒有選擇此選項,Visual Studio 將根據程序中的代碼類型自動選擇合適的調試引擎。

  4. 單擊“確定”。

  5. 如果在您的應用程序中,某個程序集包含不受信任的代碼,則會出現一個對話框以及一條安全警告。 此對話框使可以決定是否繼續調試。 在繼續調試之前,請決定您是否信任相應代碼。 代碼是您自己編寫的嗎? 您是否信任代碼編寫者? 如果該應用程序正在遠程計算機上運行,您是否認識進程的名稱? 即便該應用程序在本地運行,也不一定表示它是可信的應用程序。 例如,在 Internet Explorer 中可能會有惡意 ActiveX 控件運行。 請考慮此類惡意代碼在您的計算機中運行的可能性。 如果您確信待調試代碼值得信任,請單擊“調試”。 否則,請單擊“不調試”。

啟用或禁用實時調試

您可以在“選項”對話框中啟用或禁用實時調試。

啟用或禁用實時調試

  1. 在“工具”菜單上,單擊“選項”。

  2. 在“選項”對話框中選擇“調試”文件夾。

  3. 在“調試”文件夾中選擇“實時”頁。

  4. 在“啟用這些代碼類型的實時調試”框中,選中或清除相關的程序類型:“托管”、“本機”或“腳本”。

    要在啟用實時調試后禁用它,必須使用管理員特權運行。 啟用實時調試會設置一個注冊表項,需要管理員特權才可以更改該項。

  5. 單擊“確定”。

默認情況下,Windows 窗體應用程序有一個頂級的異常處理程序,該處理程序允許程序在能夠恢復時繼續運行。 因此,若要啟用 Windows 窗體應用程序的實時調試,還必須執行下列步驟。

為 Windows 窗體啟用實時調試

  1. 在 machine.config 或應用程序.exe.config 文件的 system.windows.form 節中,將 jitDebugging 值設置為 true。

  • <configuration>
        <system.windows.forms jitDebugging="true" />
    </configuration>
    
  • 在 C++ Windows 窗體應用程序中,還必須在 .config 文件或您的代碼中設置 DebuggableAttribute。 如果在編譯時使用 /Zi 而沒有使用 /Og,則編譯器會替您設置此特性。 然而,如果您想要調試非優化發布版本,則必須自行設置此項。 為此,您可以在應用程序的 AssemblyInfo.cpp 文件中添加下面一行:

  1. [assembly:System::Diagnostics::DebuggableAttribute(true, true)]; 

即便在您的計算機中不再安裝有 Visual Studio,仍可啟用實時調試。 如果沒有安裝 Visual Studio,則不能在 Visual Studio“選項”對話框中禁用實時調試。 對於這種情況,您可以通過編輯 Windows 注冊表來禁用實時調試。

通過編輯注冊表禁用實時調試

  1. 在“開始”菜單中,單擊“運行”。

  2. 在“運行”對話框中,鍵入 regedit,然后單擊“確定”。

  3. 在“注冊表編輯器”窗口中,找到並刪除下列注冊表項:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger

  4. 如果您的計算機運行的是 64 位操作系統,還請刪除下列注冊表項:

    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger

    • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger

  5. 注意不要意外刪除或更改任何其他注冊表項。

  6. 關閉“注冊表編輯器”窗口。

實時調試錯誤

您可能會遇到與實時調試相關聯的下列錯誤消息。

  • <程序> 中發生未處理的 win32 異常。對此異常的實時調試失敗,錯誤為: 登錄用戶沒有調試崩潰應用程序的權限。

    此信息指出:由於您沒有正確的訪問權限,實時調試失敗。

  • 無法附加到崩潰進程。 指定的程序不是 Windows 或 MS-DOS 程序。

    當您嘗試附加到 Windows 2000 下作為另一個用戶運行的進程時會發生該錯誤。

    若要解決此問題,請啟動 Visual Studio,從“調試”菜單打開“附加到進程”對話框,然后在“可用進程”列表中找到您要調試的進程。 如果您不知道進程名稱,請查看“Visual Studio 實時調試器”對話框並記下進程 ID。 在“可用進程”列表中選擇該進程並單擊“附加”。 在“Visual Studio 實時調試器”對話框中單擊“否”以關閉該對話框。

  • 未能啟動調試器,因為沒有用戶登錄。

    在沒有用戶登錄到控制台的計算機中,如果實時調試嘗試啟動 Visual Studio,則會發生此錯誤。 因為沒有用戶登錄,所以沒有用戶會話來顯示“實時調試”對話框。

    要解決此問題,請登錄到計算機。

  • 類沒有注冊。

    此錯誤指出:調試器嘗試創建一個可能是因為安裝問題而沒有注冊的 COM 類。

    若要解決此問題,請使用安裝盤重新安裝或修復 Visual Studio 安裝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM