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

相关问题