2010-09-18 33 views
0

我已经用C编写了一个应用程序,该应用程序作为Windows服务运行。大多数用户可以运行应用程序没有任何问题,但由于访问冲突造成的重大少数人体验崩溃,所以我知道我有一个地方的错误。我试图设置虚拟机来尽可能地反映用户的配置,但不能重现问题。用于在Windows上诊断C应用程序崩溃的工具/技术

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

回答

1

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

1

在大多数现代操作系统上,您的应用程序可以安装一个崩溃处理程序,在崩溃事件中将栈移走。我没有经验在Windows上这样做,但this article经历了如何做到这一点。

+0

如果程序正在破坏堆栈(访问违规指向这是一种可能性),那么堆栈跟踪可能不会给你很多信息。另外,这篇文章是适用于C还是仅适用于C++? C不像C++那样支持异常... – 2010-09-18 09:59:12