【问题标题】:How to create a core dump even if the process is normally running? [duplicate]即使进程正常运行,如何创建核心转储? [复制]
【发布时间】:2015-02-19 14:15:49
【问题描述】:

在 Linux 下,当进程崩溃时,会创建核心转储。

但是,当进程没有崩溃但看起来有问题时,我想创建一个核心转储。远程专家需要核心转储来分析。

在Windows下,我们可以通过任务管理器创建一个进程的dump文件,之后该进程还在运行。

Linux下可以吗?

【问题讨论】:

    标签: c linux debugging remote-debugging coredump


    【解决方案1】:

    您可以直接从命令行使用gcore 实用程序:

    gcore [-o filename] pid
    

    顺便说一句,如果您只想查看进程的堆栈跟踪,gstack 实用程序将完成这项工作。

    这两个实用程序都带有gdb

    【讨论】:

      【解决方案2】:

      您可以在您的代码中使用:

      if (fork() == 0) abort();
      

      【讨论】:

      • 这可能不是最好的解决方案,但男孩很聪明:)
      【解决方案3】:

      如果您想以编程方式执行此操作,请尝试使用 google-coredumper。他们的例子:

      #include <google/coredumper.h>
      ...
      WriteCoreDump('core.myprogram');
      /* Keep going, we generated a core file,
       * but we didn't crash.
       */
      

      【讨论】:

        【解决方案4】:

        拨打gdb,然后

        attach pid
        gcore
        

        其中pid 是相关进程的进程ID。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-18
          • 2011-09-27
          • 1970-01-01
          • 1970-01-01
          • 2012-07-04
          • 1970-01-01
          相关资源
          最近更新 更多