当应用程序导致严重的段错误问题时,很难找到或跟踪。我可以使用调试版本并在问题发生时生成核心转储文件。并使用core-dump文件调试此应用程序。
但是如何在发布时追踪应用程序中的特殊错误?在发布版本中似乎没有核心转储文件。虽然log是一个选项,但是当很难跟踪错误时它就没用了。
所以我的问题是如何在发布版本中追踪那些难以跟踪的错误?有没有可用的建议或技术?
以下参考可能有助于讨论。
答案 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。
这是链接: