如何在发布时追踪应用程序中的特殊错误?

时间:2011-12-06 08:50:13

标签: c linux

当应用程序导致严重的段错误问题时,很难找到或跟踪。我可以使用调试版本并在问题发生时生成核心转储文件。并使用core-dump文件调试此应用程序。

但是如何在发布时追踪应用程序中的特殊错误?在发布版本中似乎没有核心转储文件。虽然log是一个选项,但是当很难跟踪错误时它就没用了。

所以我的问题是如何在发布版本中追踪那些难以跟踪的错误?有没有可用的建议或技术?

以下参考可能有助于讨论。

[1] Core dump in Linux

[2] generate a core dump in linux

[3] Solaris Core dump analysis

4 个答案:

答案 0 :(得分:1)

您可以使用gcc -g -O2 ...

编译发布版本

缺少核心转储与您的用户设置resource limits有关(除非应用程序明确调用setrlimit setuid ;那么您应该提供一种方法避免那个电话)。您可以教您的用户如何获得核心转储(使用适当的bash ulimit builtin)。

(并且有一些不明确的方法将调试信息放在可执行文件之外)

答案 1 :(得分:1)

分发提供-dbg packages,为程序提供调试符号。它们与二进制包一起构建,可以为您的用户提供从核心转储生成有意义的回溯的能力。如果使用相同的实用程序构建软件包,则可以“几乎免费”获取自己软件的这些-dbg软件包。

答案 2 :(得分:0)

询问"客户"有关他或她做了什么使其崩溃的描述,并尝试使用您自己的具有调试信息的版本自行复制。

困难的部分是从客户那里获得正确的信息。通常他们会说他们没有什么特别的,也没有什么不同。如果可能的话,去看看有问题的人,让他们做他们做的事情让程序崩溃,写下每一步。

答案 3 :(得分:0)

我建议使用崩溃报告系统,根据我的经验,我们使用谷歌的破解垫项目为我们的Windows客户端程序,当然你可以自己编写。

Google break-pad是一个开源的多平台崩溃报告系统,它可以在发生异常或崩溃时进行小型或完全内存转储,然后您可以将其配置为将转储文件和任何其他文件上传到特定的ftp服务器或http服务器,非常有助于查找bug。

这是链接:

Google Break-pad