【问题标题】:Tools/techniques for diagnosing C app crash on Windows在 Windows 上诊断 C 应用程序崩溃的工具/技术
【发布时间】:2010-09-18 09:34:06
【问题描述】:

我用 C 语言编写了一个应用程序,它作为 Windows 服务运行。大多数用户可以毫无问题地运行该应用程序,但有少数用户因访问冲突而崩溃,所以我知道我在某处存在错误。我已尝试设置虚拟机以尽可能地镜像用户的配置,但无法重现该问题。

我的背景是 Java - 当 Java 应用程序崩溃时,它会产生一个堆栈跟踪,显示问题发生的确切位置,但本机应用程序没有那么有用。 C 开发人员通常使用哪些技术来跟踪此类问题?我无法实际访问经历崩溃的用户计算机,但我可以发送其他工具进行安装,以捕获信息。我也有显示异常代码/偏移量等的 Windows 错误报告,但这些对我来说意义不大。我已经使用 gcc 编译了我的应用程序 - 是否有一些编译器选项可用于在发生崩溃时生成更多信息?

【问题讨论】:

    标签: c gcc windows-services crash


    【解决方案1】:

    您可以尝试让用户在程序崩溃时运行ProcDump 以捕获核心转储。与使用 Visual Studio 之类的工具不同,它是一个简单的命令行实用程序,因此让用户运行它应该没有问题。

    【讨论】:

      【解决方案2】:

      在大多数现代操作系统上,您的应用都可以安装崩溃处理程序,以在发生崩溃时遍历堆栈。我没有在 Windows 上执行此操作的经验,但 this article 会介绍如何执行此操作。

      【讨论】:

      • 如果程序正在破坏堆栈(访问冲突表明这是一种可能性),那么堆栈跟踪可能不会为您提供很多信息。另外,这篇文章适用于 C,还是只适用于 C++? C 不像 C++ 那样支持异常...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      相关资源
      最近更新 更多