2010-04-05 64 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

相关问题