0

我已經在兩臺獨立的64位機器上運行這個問題(都運行VS2012)。方法如下:在它創建沒有一個新的控制檯應用程序,但這樣的:爲什麼Debug.Assert不能用於64位? (沒有符號加載)

using System.Diagnostics; 
namespace ConsoleApplication2 
{ class Program 
    { static void Main(string[] args) 
     { 
      Debug.Assert(false); 
     } 
    } 
} 

然後,打開項目設置,導航到建設 - >常規 - >目標平臺:,並選擇64(或者,選擇「任何CPU」,並禁用「首選32位」設置),然後運行該程序。

將出現Assertion Failed對話框,但點擊「重試」不會分解代碼,而只會打開「無符號加載」窗口,其中顯示「符號加載跳過」(請參閱​​下面的截圖)。 Symbol loading for optimized module System.dll was skipped because Just My Code is enabled

如果我改變平臺目標到86(或重新啓用的「首選32位」設置),斷言重新開始正常工作。

注:

  1. 我.pdb文件似乎罰款;斷點適用於任何一種設置。
  2. 如果我選擇禁用我的代碼,它仍然不起作用;它只是帶我到一個窗口,說「源不可用」。

所以我的問題是,我該如何獲得調試斷言來闖入64位應用程序中的代碼?(或爲什麼禁用「首選32位」設置打破它?)

+0

有關的? http://stackoverflow.com/a/32295100/4136325 –

回答

1

我無法解釋爲什麼發生這種情況,但是,我想這一點,並破入代碼,它只是打破在一行中調用堆棧更深:

Stack trace upon Debug.Assert fail on 64-bit app

如果你帶了你可以瀏覽到您的Debug.Assert的失敗框架調用堆棧窗口。

+0

啊,當然。非常棒,謝謝! – kmote

相關問題