簡體   English   中英

Visual Studio 2015調試器因DebuggerHidden函數的已處理異常而停止

[英]Visual Studio 2015 debugger stops for a handled exception of a DebuggerHidden function

我希望調試器在以下情況下停止:

  • 發生已處理或未處理的異常。
  • 具有DebuggerStepThrough或DebuggerHidden屬性的函數中發生未處理的異常。 調試器應在調用此函數的位置停止。

到目前為止沒有問題,我可以使Visual Studio 2015那樣工作。 但是,如果在具有DebuggerStepThroughDebuggerHidden屬性的函數內發生已處理的異常,則調試器將在調用此函數的位置停止。

我找不到解決此問題的方法。 我不記得在Visual Studio 2010或2013上的這種行為。我已經進行了搜索,沒有發現有人問同樣的問題。

編輯:我試過DebuggerNonUserCode ,結果是相同的。 它說“拋出異常”。 不,不是的! 在此處輸入圖片說明

我的設置: 在此處輸入圖片說明

您可以在VS2015中使用DebuggerNonUserCode屬性而不是DebuggerStepThrough或DebuggerHidden屬性,因為它們之間存在一些小差異:

https://blogs.msdn.microsoft.com/visualstudioalm/2016/02/12/using-the-debuggernonusercode-attribute-in-visual-studio-2015/

更新:

我在使用VS2015時遇到與您相同的問題。 我發現它與調試選項有關,請在工具->選項->調試下啟用選項“使用托管的兼容模式”。 再次調試。

在此處輸入圖片說明

MSDN文章在Visual Studio 2015中使用DebuggerNonUserCode屬性說明了DebuggerNonUserCode的作用以及為什么它不會忽略異常。

這是由於VS 2015中的性能改進引起的

啟用“僅我的代碼”后,調試器將不再收到在“您的代碼”之外引發和處理的異常的通知。

這將導致很大的性能改進,因為:

由於啟用了“我的代碼”后,調試器不再收到在“您的代碼”之外引發和處理的異常的通知,因此調試性能得到了改善。

可以通過更新2引入的注冊表項來關閉此行為:

要啟用此功能,請從命令行運行以下命令,為您調整注冊表:

reg add HKCU\Software\Microsoft\VisualStudio\14.0_Config\Debugger\Engine /v AlwaysEnableExceptionCallbacksOutsideMyCode /t REG_DWORD /d 1

您必須進行試驗,看看更重要的是什么,而忽略異常或更好的調試器性能。

暫無
暫無

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

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