Articles of 崩溃转储

在内核崩溃转储期间分析CPU寄存器

我正在debugging一个问题,并在生成崩溃转储时发生下面的内核崩溃。 在某种程度上,我确实知道,如何使用gdb(l *(debug_fucntion + 0x19))命令在发生问题的代码中find确切的行。 <1>BUG: unable to handle kernel paging request at ffffc90028213000 <1>IP: [<ffffffffa0180279>] debug_fucntion+0x19/0x160 [dise] <4>PGD 103febe067 PUD 103febf067 PMD fd54e1067 PTE 0 <4>Oops: 0000 [#1] SMP <4>last sysfs file: /sys/kernel/mm/ksm/run <4>CPU 7 <4>Modules linked in: dise(P)(U) ebtable_nat ebtables ipt_MASQUERADE iptable_nat nf_nat xt_CHECKSUM iptable_mangle bridge autofs4 8021q garp stp llc ipt_REJECT nf_conntrack_ipv4 […]

更改核心转储的位置

我想更改核心转储文件的默认位置,以便每次生成核心转储时都转到该目录。另外,是否可以通过此位置中的崩溃文件的名称来保存转储文件?

Linux中的核心转储

我想创build一个核心转储,当我的进程崩溃。 目前我正在采用这种方法: 使用gcc / g ++的“-g”构build一个特殊的“debugging”版本的程序。 执行“ulimit -c unlimited” 现在,无论程序崩溃,我们都会得到核心转储。 但我想尽量减less步骤的数量,以便: 核心转储应该总是被创build。 即使是“释放”构build。 不应要求用户手动执行“ ulimit -c unlimited ”命令。 该核心转储的回溯应该能够给出文件,函数,线路号码的调用。 这是一个人类可读的forms堆栈跟踪。 我不想用“-g”作为debugging版本来构build程序。 或者至less它不应包含任何其他debugging信息,这些信息不会产生可读的堆栈跟踪。 因为这将是该程序的发布版本。 所以我有两个问题: 如何在程序的“发布”版本中创build核心转储? 总是。 没有手动执行“ ulimit -c unlimited ”

如何在我的Linux C ++程序中启用核心转储

我的程序是用C ++编写的。 用gcc编译,用-g3 -O0 -ggdb标志。 当它崩溃时,我想打开它的核心转储。 它是否创build核心转储文件,或者我需要在程序本身或执行它的计算机上执行一些操作来启用核心转储创build? 这个文件的创build地点是什么?

Internet Explorer 8在哪里存储崩溃转储?

我正在打击一个不能在我的机器上重现的错误,但是每次都在我的客户机器上重复。 我已经尝试了一切,现在我正在寻找IE8在崩溃后遗留的任何debugging数据(或其他)。 谷歌和微软的search没有给我什么。 Internet Explorer 8在哪里存储崩溃转储? 它在崩溃之后肯定会向微软发送一些东西,我怎么能看到它呢?

当调用进程外时,MiniDumpWriteDump中的访问冲突

MiniDumpWriteDump函数的文档声明 应尽可能从单独的进程中调用MiniDumpWriteDump ,而不是从被转储的目标进程中调用。 所以我写了一个小的MFC崩溃处理程序,就是这么做的。 我遵循Hans Passant的这个SO回答中的build议,也就是说,即使exception指针在崩溃处理程序的上下文中无效,我也会将崩溃程序中的exception指针的值传递给崩溃处理程序。 当我在一个debugging版本中运行testing的时候,这个效果很好,但是当我切换到一个版本的时候,崩溃处理器程序崩溃了,在MiniDumpWriteDump函数中发生访问冲突。 我很难过 为什么这应该在debugging版本中工作,而不是在发布版本中? 这是疯狂的,因为访问违规往往是访问无效指针的指标,而我在崩溃处理程序中接收的exception指针确实是无效的 – 但另一方面,我被告知这应该不重要, MiniDumpWriteDump正在解释指针崩溃过程的上下文(从指针来源处)。 任何想法我可能做错了什么? 在旁注中:Hans在他的回答中提出了一个解决scheme,在该解决scheme中,看门狗进程被预先启动,然后在碰撞过程触发时进入hibernate状态并醒来。 我的解决scheme略有不同:我只是在发生崩溃时启动崩溃处理程序,然后通过命令行参数将崩溃程序中的必要信息传递给崩溃处理程序。 我仔细检查了传递的信息是否正确,特别是exception指针。

我可以使用Windows的小型转储文件在我的游戏中实现“保存”/“还原”吗?

我即将在我的游戏中实现保存/加载function,并认为可能使用Windows的小型转储文件来实现这一点。 我没有这方面的经验,所以任何帮助,将不胜感激。 这甚至有可能吗? 一个正在运行的应用程序可以从(迷你)转储文件“恢复”吗? 从已经发布的一些答案中,似乎可以将游戏状态存储在转储文件中,所以我将优化这个问题:我必须投入多less“胶水”来重新创build我不能存储在转储文件中的东西?

即使registry设置正确,Windows也不会生成完整的崩溃转储

我的客户正在用我写的VB6程序遇到软件崩溃。 我已经build立了registry来产生完整的崩溃转储,而且我看到它可以正常的与其系统上崩溃的其他程序正常工作,但由于某种原因,对于我的程序,stil会在一个完全不同的目录中创build简单的崩溃转储。 我的程序是在64位计算机上运行的32位程序。 我已经设置了如图所示的registry,用于SOFTWARE \ Microsoft和SOFTWARE \ Wow6432Node \ Microsoft。 依然不起作用。 有谁知道我可以肯定,每当程序崩溃,完整的崩溃转储产生?

在进程崩溃时产生崩溃转储的最佳方法是什么?

在Windows环境下( XP和Win 7 ): 在系统崩溃时自动生成崩溃转储的最佳方法是什么? 安装程序(MSI)包可以这样做吗?

在所有错误情况下,我需要采取什么行动来获得崩溃转储?

我们在Windows上,并且我们想要在应用程序出口的所有场景中出现故障转储(可能使用MiniDumpWriteDump )。 到目前为止,我们已经确定并build立了以下内容: SetUnhandledExceptionFilter对于未处理的exception(Win32以及“正常”的C ++)。 用于CRT无效参数处理的_set_invalid_parameter_handler _set_abort_behavior加上一个SIGABRT处理程序来说明对abort()调用 有什么我们错过了吗? (模一些代码非法调用ExitProcess , TerminateProcess或其中一个exit变体。)