2014-06-28 160 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認爲這是正確的行爲,神祕的是,這聽起來像 。這只是一個附加調試器的問題,你的代碼將像往常一樣沒有一個炸彈。