我在用c++编写的vulkan渲染器上遇到了分段错误,终端说它已经被核心转储了,我想通过gdb发送核心转储文件来调试分段错误发生的地方,但我在项目目录或其他任何地方都找不到核心转储文件。我注意到在apport.logs(apport.logs文件(中,核心限制似乎设置为0,所以我认为没有生成核心转储文件。我尝试在shell会话中更改ulimit-c限制,我想在该会话中生成核心转储,但似乎不起作用。我还尝试在limits.conf.上将核心转储限制设置为unlimited,但也不起作用。请帮忙。
我想通过gdb发送核心转储文件,以调试发生分段故障的
请注意,您不需要core
转储进行调试,而是可以调试实时进程。只需执行gdb --args /path/to/binary args...
。然后使用run
运行二进制文件,一旦GDB因崩溃而停止,则使用where
。
如果你真的想得到一个core
,你可以调整/proc/sys/kernel/core_pattern
。使用cat /proc/sys/kernel/core_pattern
可以查看core
转储当前的去向(可能是指向apport
的管道(。
使用echo core | sudo tee /proc/sys/kernel/core_pattern
使core
出现在当前目录中。