1) 我的守护进程有问题。它在没有核心哑一代的情况下时常崩溃。系统是FreeBSD。总是生成 .core
之前。似乎这是其他类型的错误或其他发生的事情,并且它没有核心就退出了。无论如何,我想知道这个并修复!
2) 如何在 freebsd 上检查核心必须 100% 确定生成?
这里:How to generate a core dump in Linux when a process gets a segmentation fault?
说 ulimit -c unlimited
但 Command 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/