操作系统-如何捕获崩溃进程的内存转储

发布于 2017-09-08 01:56:17 字数 0 浏览 1238 评论 4

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

想挽留 2017-10-10 03:34:05

windows下有抓dump的工具可以抓崩溃进程的内存存储,linux中在运行程序时打开ulimit,程序崩溃时也会生成带内存存储的core文件

晚风撩人 2017-09-22 21:15:25

1.程序实现
rlimit rl;
if (getrlimit(RLIMIT_CORE, &rl) == -1)
printf("getrlimit failed. This could be problem.n");
else
{
rl.rlim_cur = rl.rlim_max;
if (setrlimit(RLIMIT_CORE, &rl) == -1)
printf("setrlimit failed. Server may not save core.dump files.n");
}
2.ulimit -c xxx 系统设置
3.gdb generate-core-file

偏爱自由 2017-09-19 03:49:05

补充一下:
多个进程共享内存时,由于共享内存内容相同,只需要设定某个进程进行转储,节省空间,通过/proc/<PID>/coredump_filter进行设定。

想挽留 2017-09-12 12:30:13

崩溃通常是由进程中未处理的异常(如访问冲突或堆栈溢出)引起的。在这些情况下,Windows 的默认调试器 Dr. Watson (drwtsn32.exe) 捕获异常并终止进程。

若要捕获崩溃进程的内存转储,可按照下面的这些步骤配置调试诊断工具来捕获未处理的异常:
从“开始”、“所有程序”、“IIS 诊断”、“调试诊断工具”、“调试诊断工具 1.0”启动调试诊断工具。

如果没有显示添加规则向导的“选择规则类型”对话框,请单击“工具”菜单,选择“规则操作”,然后单击“添加规则”显示添加规则向导。

在“选择规则类型”对话框中选择“崩溃”选项,然后单击“下一步”。

在“选择目标类型”对话框中选择“特定进程”,然后单击“下一步”。

选择可能崩溃的进程,然后单击“下一步”。

在“高级配置”对话框中,单击“下一步”接受默认值。

在“选择转储位置和规则名称”对话框中,单击“下一步”接受默认值。

在“已完成规则”对话框中,单击“完成”,接受“立即激活规则”的默认值。

默认情况下,该进程中下次发生未处理的异常时,其内存转储将保存到本地计算机的 Program FilesIIS ResourcesDebugDiagLogs<崩溃规则名称>目录中。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文