首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果我只想要回溯,那么什么是好的RLIMIT_CORE设置?

如果我只想要回溯,那么什么是好的RLIMIT_CORE设置?
EN

Server Fault用户
提问于 2015-03-31 16:56:12
回答 1查看 2.2K关注 0票数 2

我的C++程序生成高达2GB的核心转储,它很快就填满了所有可用的磁盘空间。我真正需要的只是回溯。我想知道,如果我想保存回溯,核心转储文件的安全大小是多少。另外,我想知道是否还有其他聪明的解决方案。

谢谢!詹姆斯

EN

回答 1

Server Fault用户

发布于 2015-03-31 20:03:30

您可以将coredump直接输送到一个程序中,该程序将跟踪保存到临时位置,获取回退跟踪,然后将其放在用户可以访问的位置,然后移除核心。有关如何使用coredump模式进行操作的示例,请参阅man 5 core。本质上,您可以设置内核控件值kernel.coredump_pattern,将核心节点输送到特定的程序中。这样,您就可以完全控制何时保存核心节点以及何时不保存核心节点的逻辑。请注意,您以root方式运行的程序!|/usr/local/bin/coredump_it.sh就是这样做的一个例子。

或者,systemd已经提供了这样做的功能。如果您像这样设置核心模式

代码语言:javascript
复制
kernel.core_pattern = |/usr/lib/systemd/systemd-coredump %p %u %g %s %t %e

然后,您可以使用命令coredumpctl来存储和检索所述核心节点的回溯跟踪。例如,核心部分为PID 24164..

代码语言:javascript
复制
coredumpctl info 24164
$ coredumpctl info 24164
           PID: 24164 (bintree)
           UID: 1000 (matthew)
           GID: 1000 (matthew)
        Signal: 11 (SEGV)
     Timestamp: Mon 2015-02-09 19:14:13 GMT (1 months 19 days ago)
  Command Line: ./bintree
    Executable: /home/matthew/Testbed/trees/binary/bintree
 Control Group: /user.slice/user-1000.slice/session-1.scope
          Unit: session-1.scope
         Slice: user-1000.slice
       Session: 1
     Owner UID: 1000 (matthew)
       Boot ID: 82a18962ecc34109965530967f12150b
    Machine ID: 69d27b356a94476da859461d3a3bc6fd
      Hostname: home.localdomain
       Message: Process 24164 (bintree) of user 1000 dumped core.

                Stack trace of thread 24164:
                #0  0x0000000000400680 bintree_fetch (bintree)
                #1  0x0000000000400a7e main (bintree)
                #2  0x000000316fc1ffe0 __libc_start_main (libc.so.6)
                #3  0x0000000000400589 _start (bintree)

您可以直接调用coredumpctl来获取保存的代码转储列表。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/679614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档