c++ - cpp gdb 在没有核心和 gdb 附加到工作进程的情况下崩溃

标签 c++ process crash gdb freebsd

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 生成核心?

谢谢,对不起我的英语。很难用非母语写一些重要信息。你必须明白...

最佳答案

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

或者只是不要理会附加脚本(这毫无意义)并运行 gdb server 1234 然后键入命令 cont 并等待它崩溃。

如果它在 gdb 附加到它时崩溃,为什么你需要一个核心文件?核心文件的好处是使用调试器来检查它,但如果它在调试器中崩溃,那么直接调试它,你不需要核心文件!所以忘记生成核心文件,当它崩溃时直接检查进程。

关于c++ - cpp gdb 在没有核心和 gdb 附加到工作进程的情况下崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10636841/

相关文章:

java - 安卓应用崩溃原因

android - Cocos2D-x 示例应用程序在启动时崩溃

c++ - boost::spirit::qi::double_ 和 boost::spirit::qi::int_

c++ - boost 中的进程

unix - 为什么 unix 进程的内核堆栈位于上下文的动态部分

C:如何一次将一个整数从 parent 传递给 child ?

java - 从 Java 打开文档的更好方法?

java - JVM 在 CompilerThread 崩溃

c++ - 使用可选参数覆盖虚函数

c++ - 检查所有可变参数模板参数的特征