2014-06-28 131 views
0

经过几个月的不活动之后,我决定再次使用Microsoft Visual Studio(C#)。Visual Studio 2008停止显示错误

经过一些点击“开始调试”我得到了Windows错误(我认为svchost.exe已停止工作),我不知道这是否与我即将说的相关,但我不是例如当我调用一个数组超出范围时出现任何错误。

该程序只是不执行代码assossiated与错误(我注意到数组和文件I/O问题),但继续正常运行,这是让我疯狂,因为我必须点击“开始调试”在我编写每行代码之后,为了确保我是正确的。

所以,调试>例外,它的混乱在那里,我以前没有碰过它。 任何帮助,将不胜感激。

编辑:我已经重启了3次我的电脑,做清洁和刚才(项目),并没有什么改变重建。

EDIT2:很抱歉,如果它的混乱,这里有一些新的信息:

public partial class frmMain : Form 
{ 
    PictureBox[] pic = new PictureBox[120]; 
    public frmMain() 
    { 
     InitializeComponent(); 
    } 
    private void frmMain_Load(object sender, EventArgs e) 
     { 
      // Creating pictureboxes 
      for (int i = 1; i <= 199; i++) //199 instead of 120 or 119 and the rest of the for isn't executed plus no error or warning displayed. 
      { 
       pic[i] = new PictureBox(); 

EDIT3:下面是另一个例子。如果我尝试读取不存在try-catch序列的不存在的文件,那么整个pic []矩阵就像程序运行时从内存中卸载一样。

pic[i].Image = Image.FromFile("H:\\My Pictures\\" + i + ".jpg"); 

编辑4:谢谢你的时间。我尝试了“发布”而不是“调试”,问题被解决了一段时间。

当我决定按“继续”,而不是对“OutofRangeException”,“破发”时,Windows弹出这样一条消息:“必须的Windows上运行兼容性模式下运行程序”。现在,当我按下“开始调试”这就像之前...

+0

你会得到什么错误?你有没有尝试清理和重建你的整个应用程序? –

+0

您是否尝试过重新启动计算机? – Almo

+0

我已经重新启动了3次我的电脑,并刚刚完成了清理和重建(项目)。编辑:如果我做一个数学错误(转换错误或类似的东西)程序停止,但在数组上,例如,什么也没有,它只是跳过有问题的代码(例如在for循环)。 – AchiPapakon

回答

0

这听起来像你可能会处理这个问题:

Something swallowing up unhandled exceptions?

基本上,在64位机器构建时,有时候例外是吞下。

我相信有可能是它的修补程序,所列出的位置:

https://connect.microsoft.com/VisualStudio/feedback/details/357311/silent-exceptions-on-x64-development-machines

这里是修复程序:http://support.microsoft.com/kb/976038

否则,请尝试将目标构建的x86,而不是64或“任何CPU”。也尝试在发布模式下运行,看看是否发生异常。

如果这不是问题,那么您可能需要重新安装Visual Studio。如果您使用Visual Studio Express,为什么不升级到比2008更新的版本?

编辑:

同时,尝试将所有的服务包和补丁的操作系统为好。如果你使用的是Windows 7,那么你肯定应该在SP1上。您还应该确保您使用的是Visual Studio 2008 SP1和所有修补程序。

+0

谢谢你的时间。我尝试了“发布”而不是“调试”,问题被解决了一段时间。 当我决定在“OutofRangeException”中按“Continue”而不是“Break”时,Windows弹出如下消息:“Windows必须在兼容模式下运行程序”。现在,当我按“开始调试”,就像之前... 因此,看起来我会安装明天的32位Vs2013(这对我来说是免费的)。它与64位版本有什么重大区别? – AchiPapakon

+0

@Achilles - 仅供参考,没有Visual Studio的“32位”或“64位”版本,它都是一个版本,可以同时工作。我错误地说明了'releae模式'的含义。我的意思是没有调试器运行(即使它是一个调试版本)。按下'F5'或'开始/继续'运行调试器。 'Ctrl-F5'或'Debug-> Start Without Debugging'在没有调试器的情况下运行 –

+0

Ctrl-F5解决了这个问题,尽管这个“无需调试开始”看起来有点奇怪。感谢您的帮助! – AchiPapakon

0

你已经打在Windows/.NET/C#/ WOW64已知的不好的特性,当Form.Load事件处理程序抛出异常发生这种情况。

VS2010 does not show unhandled exception message in a WinForms Application on a 64-bit version of Windows

Hans Passant's答案:

这是由Windows WOW64仿真层 ,使32位代码在Windows的64位版本上运行引起的一个讨厌的问题。它在触发Load事件的代码中吞下异常。 从看到它,并加强在防止调试器。这是 显然很难解决,在微软的Windows和DevDiv群体 指责来回。 DevDiv对此无能为力, Windows认为这是正确的行为,神秘的是,这听起来像 。这只是一个附加调试器的问题,你的代码将像往常一样没有一个炸弹。