2010-03-19 234 views
9

我正在使用System.Diagnostics.Debugger.Break()方法來允許用戶從命令行設置斷點的程序。現在這已經運行了好幾個星期了。但是,當我今天正在修復單元測試時,我嘗試使用命令行中的調試開關,但它不起作用。System.Diagnostics.Debugger.Debug()停止工作

這是我已經試過:(放一個的System.Console.WriteLine()後)

    • 我已經證實,調試()方法真正被稱爲VE證實,構建尚處於調試
    • 我做了一個乾淨的構建
    • 我已經重新啓動產品工作室

    一個快速谷歌搜索沒沒有透露任何東西,而.Net的API文檔沒有提到這個功能沒有正確執行。那麼......有什麼想法?

  • 回答

    17

    我終於明白髮生了什麼事。出於某種原因,我的機器上發生了一些變化,所以只調用Debugger.Debug已經不夠了(仍然不明白改變了什麼)。在任何情況下,我現在可以導致調試使用上來:

    if (Debugger.IsAttached == false) Debugger.Launch(); 
    
    +0

    我遇到了從Visual Studio 2008遷移到Visual Studio 2010的相同問題。'Debugger.Break()'在VS2008中工作正常;對於VS2010,我現在使用'Debugger.Launch()'。 – 2012-02-17 01:00:36

    +0

    與VS2015相同 - Debugger.Break()不起作用 - Debugger.Launch()工作正常 – chenop 2017-06-22 19:19:51

    0

    您使用VS 2008 SP1嗎?在該版本中,我有很多關於調試的問題,並且所有這些問題都由此Microsoft patch解決。

    斷點放環或 遞歸函數在每次迭代所有 進程沒有擊中。 通常,某些進程可能會通過循環的多次迭代 , 在 進程停止之前忽略斷點。

    當您在調試器中調試多個 進程時,會出現斷點,但它們不是 。

    還有一些其他與調試器相關的問題也已修復。

    +0

    對不起...安裝補丁後,我仍然看到了問題。 :-( – 2010-03-19 03:27:42

    2

    我用debugger.launch()方法,它突然停止工作。使用

    if (Debugger.IsAttached == false) Debugger.Launch(); 
    

    也沒有調出調試器。我嘗試重置我的視覺工作室設置,它工作!

    0

    從這裏提取(MSDN)以下注意事項:

    與net_v40_long開始,運行時不再行使推出的M調試程序的嚴格控制:System.Diagnostics.Debugger.Break方法,而是向Windows錯誤報告(WER)子系統報告錯誤。 WER提供了許多設置來定製問題報告體驗,因此很多因素都會影響WER響應操作系統版本,進程,會話,用戶,機器和域等錯誤的方式。如果調用M:System.Diagnostics.Debugger.Break方法時出現意外結果,請檢查機器上的WER設置。有關如何自定義WER的更多信息,請參閱WER設置https://msdn.microsoft.com/library/windows/desktop/bb513638.aspx。如果您想確保無論WER設置如何都啓動調試器,請務必調用M:System.Diagnostics.Debugger.Launch方法。

    我認爲這解釋了檢測到的行爲。