visual studio 2012调试器不起作用
我的visual studio 2012停止显示调试器异常。我的意思是这个对话框显示了我的确切例外和行:http://i.msdn.microsoft.com/dynimg/IC286574.jpg。visual studio 2012调试器不起作用
在例如,如果我运行下面的Visual Studio代码:
using System;
using System.Windows.Forms;
namespace debugger_test
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void Form1_Load(object sender, EventArgs e)
{
int zero = 0;
int a = 1/zero; // it hangs on this line
MessageBox.Show("this messagebox is never shown");
}
}
}
那么它不返回任何异常。它刚刚启动,执行int a = 1/zero;
后没有代码。
但是,当我单独运行相同的程序作为编译.exe然后它返回这种异常:http://i.msdn.microsoft.com/dynimg/IC8596.gif在这种情况下关于DivideByZeroException。
- 它发生在任何项目。
- 修复并重新安装visual studio没有解决它。尽管重新安装后仍保留了一些VS设置。
- 我不知道任何可能导致它的变化,我不确定它何时开始发生。
如何从Visual Studio中的第一张图片再次获得调试器?谢谢。
编辑:Sascha的建议并没有完全解决我的问题。 我不知道如何抛出try {}内部的异常,但抛出一个不在try {}内部的异常。
以下代码要么只抛出一个异常,要么只挂在int gg = 1/a;
行,不管是否使用try/catch或不使用。
public void Form1_Load(object sender, EventArgs e)
{
int zero = 0;
int a = 1/zero; // this line should throw an exception
MessageBox.Show("to be never shown");
}
__
public void Form1_Load(object sender, EventArgs e)
{
try
{
int zero = 0;
int a = 1/zero;
MessageBox.Show("to be never shown");
}
catch
{
MessageBox.Show("catched"); // it should show this messagebox
}
}
任何想法如何正确设置它?谢谢。
这似乎已经解决了我到目前为止。
- 在注册表编辑器,找到以下注册表子项:HKLM \ SOFTWARE \微软\的Windows NT \ CURRENTVERSION \图像文件执行选项
- 创建DWORD值的注册表项。
- 命名新的注册表项DisableUserModeCallbackFilter。
- 的DisableUserModeCallbackFilter注册表项的值设置为1
发现有http://support.microsoft.com/kb/976038/en-us
而且它必须被编译为发布。荒谬。
看一看关于已知问题这个问题上x64 systems:
这是64位操作系统平台的已知问题。原因在于,64位OS内核不允许通过核心模式 堆栈的用户模式异常。这个例外被OS轻易吞噬。发生在 FormLoad处理程序中,因为它在OS回调中被调用。 32位操作系统 不这样做,所以它不repro那里。
操作系统小组正在调查相关问题。与此同时,你做 必须解决这个问题。打开“停止第一次机会 异常”将使调试器停止在这种情况下。但 确实使调试器停止非常频繁,所以你可能想要做 只有这样,当你发现一个问题
这是Visual Studio中的一个bug /限制当你的电脑是64位,这种情况发生异常发生在表单加载。
啊哈。我通过调试,例外,检查所有工作,好吧。感谢您为我指出正确的方向! – LukAss741 2014-10-31 01:10:30