调试.断言/重试,32位和64位的行为不同

本文关键字:64位 断言 重试 32位 调试 | 更新日期: 2023-09-27 18:30:06

我使用的是现成的WindowsFormsApplication。我唯一添加的是Form1_Load事件处理程序,如下所示(Visual Studio Premium 2013):

private void Form1_Load(object sender, EventArgs e)
{
    Debug.Assert(false);
}
  1. 对于64位调试构建:当我点击Debug.Assert(false)并按下Retry按钮时,调试器会进入相应的源代码行
  2. 对于32位调试构建:当我点击与上面完全相同的行时,会显示MessageBox,但点击重试按钮不会中断

Q1:为什么行为一开始就不同?

Q2:如何使32位调试构建在点击重试时中断?

编辑

  • 我确实在Windows 8.1 Visual Studio Premium 2013(版本12.0.30723.00更新3)上观察到了上述行为
  • 在Windows 8.1 Visual Studio Premium 2013(版本12.02.21005.1 REL)上,我没有观察到上述行为。具体来说,当为32位调试构建点击Retry时,调试器会直接进入代码。包含Debug.Assert的行是黄色的,而64位调试构建中的同一行是绿色的

调试.断言/重试,32位和64位的行为不同

今天,我安装了适用于Microsoft Visual Studio Premium 2013的更新4(版本12.0.31011.00更新4),问题已经解决。对于32位和64位的调试构建,调试器在重试时停止。

(无论出于何种原因,包含32位Debug.Assert(false)的行为黄色,64位为绿色。)