Just-In-Time 偵錯
當 Visual Studio 外執行的應用程式發生例外狀況或沒有回應時,Just-in-Time 偵錯會自動啟動 Visual Studio。這樣可讓您在 Visual Studio 未執行的情況下測試應用程式,並於發生問題時使用 Visual Studio 開始偵錯。
Just-In-Time 偵錯無法存放區為 Windows 應用程式。Just-In-Time 偵錯無法在原生應用程式 (例如視覺化檢視) 中所裝載的 Managed 程式碼上運作。
使用 Just-In-Time 偵錯
當您安裝 Visual Studio 時,預設會啟用 Just-In-Time 偵錯。如果您需要停用或重新啟用 Just-In-Time 偵錯,請參閱啟用或停用 Just-In-Time 偵錯。
當 Just-In-Time 偵錯啟用時,您可以在 Visual Studio 外測試應用程式。在沒有回應或發生例外狀況時,您會看到具有類似下列訊息的對話方塊:
在 terrarium.exe[3384] 中發生未處理的例外狀況 ('System.TypeInitializationException')。
出現這個對話方塊時,您可以使用下列程序開始偵錯。
若要在發生錯誤時開始進行 Just-In-Time 偵錯
在啟用 Just-In-Time 偵錯] 對話方塊,請在 [可能的偵錯工具] 清單中,按一下 [Visual Studio 2012 中的新執行個體。] 或按一下已執行 Visual Studio 的執行個體。
針對所有未來的損毀情況下自動使用 Visual Studio 中,按一下 [設定目前選取的偵錯工具做為預設值。]。
如果想要選擇能夠對何種程式碼類型進行偵錯,請按一下 [手動選擇偵錯引擎]。如果沒有選擇這個選項,Visual Studio 就會自動根據程式中的程式碼類型,選擇適當的偵錯引擎。
按一下 [確定]。
如果應用程式包含的組件含有不受信任的程式碼,就會出現安全性警告對話方塊。這個對話方塊可讓您決定是否繼續偵錯。在繼續偵錯之前,請決定這是否為可以信任的程式碼。這是您自行撰寫的程式碼嗎?您信任撰寫這個程式碼的人嗎?如果應用程式在遠端電腦上執行,您認得它的處理序名稱嗎?即使應用程式在本機執行,也不代表絕對可以信任。例如,惡意的 ActiveX 控制項有可能會在 Internet Explorer 中執行。不要忽視電腦上執行這類惡意程式碼的可能性。如果確定可以信任您要偵錯的程式碼,請按一下 [偵錯]。否則,請按一下 [不要偵錯]。
啟用或停用 Just-In-Time 偵錯
您可以從 [選項] 對話方塊啟用或停用 Just-In-Time 偵錯。
若要啟用或停用 Just-In-Time 偵錯
在 [工具] 功能表上,按一下 [選項]。
在 [選項] 對話方塊中選取 [偵錯] 資料夾。
在 [偵錯] 資料夾中選取 [Just-In-Time] 頁面。
在 [啟用這些程式碼類型的 Just-In-Time 偵錯] 方塊中,選取或清除相關的程式類型:[Managed]、[原生] 或 [指令碼]。
若要在啟用 Just-In-Time 偵錯之後加以停用,您必須以系統管理員權限執行。啟用 Just-In-Time 偵錯會設定一個登錄機碼,您必須使用系統管理員權限才能變更該機碼。
按一下 [確定]。
根據預設,Windows Form 應用程式具有最上層的例外狀況處理常式,允許程式在能夠復原時繼續執行。因此,您必須執行下列額外步驟,才能對 Windows Form 應用程式啟用 Just-In-Time 偵錯。
若要啟用 Windows Form 的 Just-In-Time 偵錯
在 machine.config 或 application.exe.config 檔案中,將位於 system.windows.form 區段的 jitDebugging 值設定為 true:
<configuration> <system.windows.forms jitDebugging="true" /> </configuration>
在 C++ Windows Form 應用程式中,您也必須在 .config 檔或您的程式碼中設定 DebuggableAttribute。如果您使用 /Zi 而且未使用 /Og 進行編譯,則編譯器將會設定這個屬性 (Attribute)。然而,如果您要對非最佳化的發行組建進行偵錯,則必須自行完成此設定。若要這樣做,您可以將下面這行程式碼加入至應用程式的 AssemblyInfo.cpp 檔案。
[assembly:System::Diagnostics::DebuggableAttribute(true, true)];
如需詳細資訊,請參閱DebuggableAttribute。
即使電腦上已沒有安裝 Visual Studio,Just-In-Time 偵錯可能仍然為啟用狀態。當 Visual Studio 未安裝時,您無法從 Visual Studio [選項] 對話方塊停用 Just-In-Time 偵錯。在此情況下,您可以編輯 Windows 登錄來停用 Just-In-Time 偵錯。
若要編輯登錄來停用 Just-In-Time 偵錯
在 [開始] 功能表中,搜尋並執行 用
在 [登錄編輯程式] 視窗中,尋找並刪除下列登錄機碼:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\DbgManagedDebugger
如果您的電腦執行 64 位元作業系統,也請刪除下列登錄機碼:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion\AeDebug\Debugger
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\DbgManagedDebugger
請小心不要刪除或變更其他任何登錄機碼。
關閉 [登錄編輯程式] 視窗。
Just-In-Time 偵錯的錯誤
您可能會看見下列與 Just-in-Time 偵錯相關的錯誤訊息。
**<program> 中發生未處理的 win32 例外狀況。**Just-In-Time 偵錯此例外狀況因為下列錯誤導致失敗:登入的使用者沒有存取權限可以偵錯損毀的應用程式。
此訊息表示您沒有適當存取權限,因而導致 Just-In-Time 偵錯失敗。如需必要權限的詳細資訊,請參閱Remote Debugging Permissions。
無法附加至沒有回應的處理序。指定的程式不是 Windows 或 MS-DOS 程式。
當您試圖附加至在 Windows 2000 以另一個使用者身分執行的處理序時,就會發生這個錯誤。
若要解決這個問題,啟動 Visual Studio,從開啟 [除錯] 功能表的 [附加至處理序] 對話方塊並找出您在 [可使用的處理序] 清單要偵錯的處理序。如果您不知道處理序的名稱,請查看 [Visual Studio Just-In-Time 偵錯工具] 對話方塊,然後記下處理序 ID。在 [可使用的處理序] 清單中選取該處理序,然後按一下 [附加]。在 [Visual Studio Just-In-Time 偵錯工具] 對話方塊中,按一下 [否] 以關閉此對話方塊。
由於沒有使用者登入,無法啟動偵錯工具。
這個錯誤,在啟用 Just-In-Time 偵錯啟動嘗試在沒有使用者登入主控台的電腦上時的 Visual Studio。因為沒有使用者登入,所以沒有使用者工作階段可顯示 [Just-In-Time 偵錯] 對話方塊。
若要修正這個問題,請登入該電腦。
類別並未登錄。
這個錯誤表示偵錯工具嘗試建立的 COM 類別尚未登錄,可能是因為安裝問題所致。
若要解決這個問題,請使用安裝磁碟重新安裝或修復 Visual Studio 安裝。
請參閱
參考
安全性警告:附加至未受信任的使用者帳戶所擁有的處理序可能會造成危險。如果下面的資訊看起來有問題,或者您並不確定,請不要附加至此處理序