关注这个问题:
Good crash reporting library in c#
是否有像CrashRpt.dll这样的库在Linux上执行相同的操作?也就是说,生成包含核心转储和任何必要环境的故障报告,并通知开发人员?
编辑:这似乎与this question
重复答案 0 :(得分:3)
请参阅Stack Overflow上的 Getting stack traces on Unix systems, automatically 。
答案 1 :(得分:2)
使用调试符号编译代码,在shell中输入unlimit coredumpsize,您将在与二进制文件相同的文件夹中获得coredump。使用gdb / ddd - 首先打开程序,然后打开核心转储。您可以查看this以获取更多信息。
答案 2 :(得分:1)
@Ionut
这会处理生成核心转储,但是当其他用户崩溃时,它不会处理通知开发人员。
答案 3 :(得分:0)
注意:x86
seg-fault崩溃中有两个有趣的寄存器。
第一个 EIP ,指定发生异常的代码地址。在RichQ的回答中,他使用addr2line来显示与崩溃地址对应的源代码行。但EIP可能无效;如果你调用一个null的函数指针,它可以是0x00000000
,如果你破坏了你的调用堆栈,那么返回可以将任何随机值弹出到EIP中。
第二个 CR2 ,指定导致分段错误的数据地址。在RichQ的例子中,他将i设置为空指针,然后访问它。在这种情况下,CR2将是0x00000000
。但如果你改变了:
int j = *i
为:
int j = i[2];
然后您尝试访问地址0x00000008
,这就是CR2中的内容。
答案 4 :(得分:0)
感谢。
答案 5 :(得分:0)
@马丁
我为x86进行架构验证,因此我非常熟悉处理器提供的架构,但非常熟悉它的使用方式。这就是我的评论基础。如果可以指望CR2给出正确答案,那么我就会纠正。
答案 6 :(得分:0)