【问题标题】:cpp gdb crash without core & gdb attach to working processcpp gdb 崩溃,没有核心 & gdb 附加到工作进程
【发布时间】:2012-05-23 12:40:23
【问题描述】:

1) 我的守护进程有问题。它不时崩溃,没有核心愚蠢的一代。系统是FreeBSD。之前总是生成.core。似乎这是某种其他类型的错误或其他发生的事情,并且它没有核心退出。无论如何,我想知道这一点并修复!

2) 如何在 freebsd 上检查必须 100% 确定生成内核? 在这里:How to generate a core dump in Linux when a process gets a segmentation fault?ulimit -c unlimitedCommand not found

3) 似乎捕获了我需要使用 GDB 附加到进程的错误/崩溃?怎么做?还在stackoverflow上搜索并成立: gdb attach to a process without stop 但我确信我做得很好:

a) 我将名为attach 的文件授予他执行权限并添加以下行:

 echo "cont" > attach.gdb
 gdb server $1 -x attach.gdb
 rm attach.gdb

b) 像./attach 一样运行 它开始了,但我无能为力。这是正确的?我需要在守护进程崩溃之前等待,然后写generate-core-file 来获取核心?

4) 如果守护进程在没有 SEGFAIL 或其他异常的情况下退出,命令 generate-core-file 会生成核心吗?

感谢并为我的英语感到抱歉。很难用非母语写一些重要的信息。你必须明白...

【问题讨论】:

    标签: c++ process crash gdb freebsd


    【解决方案1】:

    3b) 你需要运行./attach 1234,其中 1234 是正在运行的进程的 PID(该 PID 将是脚本的 $1 参数,将传递给 gdb)

    或者干脆不理会那个附加脚本(这很没有意义)并运行gdb server 1234,然后输入命令cont 并等待它崩溃。

    如果它在连接 gdb 时崩溃,为什么需要核心文件?核心文件的好处是使用调试器来检查它,但如果它在调试器内部崩溃然后直接调试它,你不需要核心文件!所以忘记 generate-core-file ,当它崩溃时直接检查进程。

    【讨论】:

    • 谢谢,但总是有 .core 文件会很有用,因为我不能整天监控 gdb 下的守护进程。你知道“爸爸的事情发生在你意想不到的时候”并且在最不合时宜的时刻
    • 你不需要监控它,你可以让它继续运行,但是在 gdb 下它会运行得更慢,如果有任何信号出现就会停止。我只回答了关于使用 gdb 的 3 和 4。找出为什么你没有核心文件找出守护程序退出时的退出状态(可能通过从脚本运行它并在它退出后打印 $? )并找出为什么没有核心文件(也许它正在运行从它没有权限写入文件的目录)
    • 能否添加如何获取退出状态的分步说明?就像我的问题一样,使用 ./server 创建 shell 文件 |回声 $ > status.file ?附言。不,它后来在 SIGFAIL 上写了 .core。)
    • ./server ;回声$? > 状态文件
    【解决方案2】:

    如果您的进程由于 ulimit 问题而没有核心,请编写一个小型 shell 脚本,在运行您的进程之前设置 ulimit:

    #! /bin/sh
    ulimit -c unlimited
    /path/to/my/program > program.out 2>&1
    echo $? >> program.out
    

    这使您可以从程序中捕获标准输出和标准错误,并将程序返回状态捕获到 program.out。您必须注意这个文件的大小,如果它填满了它所在的文件系统,可能会导致其他问题。

    不过,这并不是你没有获得核心的原因。如果您的程序是为调试而编译的并且遇到了 assert(),它将退出而不进行核芯。您的程序在退出之前是否打印任何内容或记录任何内容?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-23
      • 1970-01-01
      • 2019-01-15
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      相关资源
      最近更新 更多