当前位置: 首页 > 面试题库 >

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

阚小云
2023-03-14
问题内容

我的程序是用C ++编写的。使用-g3-O0-ggdb标志使用gcc编译。当它崩溃时,我想打开它的核心转储。它会创建核心转储文件,还是我需要做一些事情以在程序本身或在执行该文件的计算机上启用核心转储创建?该文件的创建位置以及名称是什么?


问题答案:

您需要设置ulimit -c。如果此参数的值为0,则不会创建coredump文件。这样做:ulimit -c unlimited并检查是否一切正确ulimit -a。当应用程序完成某些不适当的操作时,将创建coredump文件。我系统上的文件名是core.<process-pid-here>



 类似资料:
  • 在我的jboss应用程序突然停止,核心转储文件在 /var/crash/path中生成,进程ID为。在同一位置没有生成日志。Java版本是java-1.7.0-openjdk-1.7.0.45。x86_64。我想知道为什么我的应用程序被杀死,这个文件被生成。我怀疑发生了一些内存泄漏导致了这个失败。但是在应用程序日志中没有跟踪。如何调试这个代码转储文件(大约6 GB)

  • 问题内容: 每当进程崩溃时,我都想创建一个核心转储。目前,我正在采用这种方法: 使用gcc / g ++的“ -g”构建程序的特殊“调试”版本。 执行“ ulimit -c unlimited” 现在,只要程序崩溃,我们就获得核心转储。 但我想减少步骤数,以便: 应始终创建核心转储。即使是“发布”版本。不应要求用户手动执行命令“ ”。 该核心转储的回溯应该能够给出调用的文件,函数,行号。那是人类可

  • 问题内容: 我想在我的C ++应用程序中的特定位置强制进行核心转储。 我知道我可以通过执行以下操作来做到这一点: 但是我想知道是否有更清洁的方法? 我正在使用Linux。 问题答案: 提高信号号6(在Linux中)是一种方法(尽管请记住,并非所有POSIX实现中SIGABRT都 必须 为6,因此,如果不是quick’n,则可能需要使用值本身’脏调试代码)。 调用也会导致核心转储,你甚至可以做到这一

  • 问题内容: 我需要一种 从应用程序内部 请求堆转储 的方法 。 基本原理:当遇到特定的错误情况时,我想转储堆,以便可以看到内存中有什么内容。 但是我想使它自动化(例如,当我检测到某些特定情况发生时。或者当看门狗不再收到ping命令时;当某些测试失败时)。因此,我需要一种从应用程序本身内部转储堆的方法。我似乎无法通过MX bean的东西找到它。尽管MX Bean可以通过监视器和“可拥有的同步器”信息

  • 我用wiringPiISR#得到了一个核心转储 Java运行时环境检测到一个致命错误:#Internal error(os_linux_zero.cpp:254),PID=6552,TID=1866855520致命错误:捕获未处理信号11

  • 问题内容: 运行C程序时,它显示 “((核心转储)”), 但是在当前路径下看不到任何文件。 我已经设置并验证了: 我也试图找到一个名为“ core”的文件,但是没有得到core dumped文件? 任何帮助,我的核心文件在哪里? 问题答案: 阅读/usr/src/linux/Documentation/sysctl/kernel.txt。 [/ proc / sys / kernel /] cor