2010-04-05 63 views
2

我部署了一個VB.Net應用程序,並運行它,我得到'AppName已停止工作「」Windows正在檢查問題的解決方案「以及Windows 7下的取消按鈕。在XP下,我只得到選項向微軟發送錯誤報告啓動我的部署我的應用程序得到「已停止工作」的錯誤。我該如何調試?

沒有明顯的方法掛鉤到調試器中我沒有收到任何異常數據我已經把msgboxes放在我的代碼的開頭,它們沒有被擊中所以在我的任何代碼執行失敗之前我已經檢查了所有我能想到的依賴關係

我開發了VS2008 Windows 7上的應用程序,並部署到Windows 7和WinXP中

我需要一些建議 - 我該如何調試?

回答

1

調試此問題的最簡單方法是使用Windbg,如果您知道並且有Tess博客可以解決此問題。

在Windows 7上,調試起來要容易得多,因爲使用ETW的堆棧散步功能。這裏是how you can use在管理代碼

+0

我看着這些,他們做看起來值得學習,大家似乎都認爲他們很容易。是的,就像騎自行車一樣容易,一旦你知道如何,這很容易,但你第一次得到很多的碰撞和瘀傷!當我有時間的時候。 – 2010-04-06 04:02:45

0

好的,這是我做的。

我禁用在項目屬性的應用程序選項卡中啓用應用程序框架。使用這可以讓事情變得更容易,但更不透明。我再也不會使用那個柺杖了!

使用自己的Sub Main你可以看到,並在您的形式加載像這種情況發生的錯誤迴應:

Public MainForm As frmSettings 

Public Sub Main() 

    Try 
     MainForm = New frmSettings 
    Catch ex As Exception 
     Log.WriteToProgressLog("Error new form: " & ex.Message) 
    End Try 

    Try 
     MainForm.Show() 
    Catch ex As Exception 
     Log.WriteToProgressLog("Error Showing Form: " & ex.Message) 
    End Try 

    Try 
     Application.Run(MainForm) 
    Catch ex As Exception 
     Log.WriteToProgressLog("Error Running App: " & ex.Message) 
    End Try 

End Sub 

,您可以在全球範圍內的形式使用該看到的。是的,我知道,純粹主義者會抱怨,但我的理念是:我對零容忍政策零容忍。我甚至知道如果使代碼更高效,更易於閱讀,就可以使用goto。 Anyhoo ...

更改後,我得到一個實例化窗體的錯誤。變成Microsoft.VisualBasic.PowerPacks.Vs.dll組件(我的表單上有一個明顯需要的單行控件)不是.Net 3.5發行版的一部分,所以你必須將它包含在你的應用程序中。那是怎麼回事?它並沒有設置爲默認複製本地。 WT ...?我錯誤地認爲我只需要包含外部依賴關係。對於.Net XCopy安裝非常重要!

  • 布拉德
+0

你可以輸出'ex.ToString()'。這樣你就得到了一個完整的堆棧跟蹤,這不僅更有幫助,而且也消除了使用三個不同的try-catch塊的必要性。 – 2016-01-11 21:48:40

相關問題