代码之家  ›  专栏  ›  技术社区  ›  Brad Mathews

启动已部署的应用程序时出现“已停止工作”错误。如何调试这个?

  •  2
  • Brad Mathews  · 技术社区  · 16 年前

    应用程序名 已停止工作“Windows正在检查问题的解决方案”以及Windows 7下的“取消”按钮。在XP下,我只能选择是否将错误报告发送给Microsoft。

    没有明显的方法钩住调试器。我没有得到任何异常数据。我把msgboxes放在我的代码的最开始,他们没有击中,所以它是失败之前,我的任何代码执行。我已经检查了我能想到的所有依赖项。

    我在vs2008windows7上开发了这个应用程序,并部署到windows7和WinXP上。

    我需要一些建议-如何调试这个?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Paul Groke Chronial    10 年前

    调试此问题的最简单方法是使用Windbg,如果您知道并且 Tess 通过博客来了解这一点。

    在Windows7上,由于堆栈遍历功能使用 ETW . 这是 how you can use 在托管代码中

        2
  •  0
  •   Brad Mathews    16 年前

    好吧,这就是我所做的。

    我在项目属性的应用程序选项卡中禁用了启用应用程序框架。使用这个可以使事情更简单,但透明度要低得多。我再也不用那个拐杖了!

    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可以使代码更高效、更易于阅读,我甚至会使用goto。不管怎样。。。

    更改后,我在实例化表单时遇到错误。结果证明微软.VisualBasic.PowerPacks.Vs.dll组件(我的表单上有一个单行控件,显然需要这样做)不是.NET3.5发行版的一部分,所以你必须在你的应用程序中包含它。怎么回事?默认情况下不设置为复制本地。重量。。。?我错误地认为我只需要包含外部依赖项。.NETXcopy安装就这么多了!

    • 布拉德
    推荐文章