ubuntu 22.04怎么产生coredump文件
·
在网上找了很多教程,都不行(一部分对),各种摸索,总算搞出来了一个能行的办法
coredump实例代码
#include <stdio.h>
#include <unistd.h>
int main(int argc,char * argv[])
{
char * pStr="helloworld\n";
printf("%s\n",pStr);
pStr[1] = 'y';
return 0;
}!](https://i-blog.csdnimg.cn/direct/a3dc77d883dc44c995fd4c3c065da233.png)
设置ulimit -c
首先需要设置limit -c,不能是0
sudo vim /etc/security/limits.conf
进去后,在文件末尾加上这两句话(*号一定要加):
* hard core unlimited
* soft core unlimited
直接使用ulimit -c unlimited 总是会提示一个没权限operation的错误
一定要记住,好多教程都没说,改完这个之后,一定重启一次!!!
重启之后查看
cat /proc/sys/kernel/core_pattern
会显示为core,表示coredump文件会显示在可执行文件的目录下,如果想显示在指定目录下,应该可以在里面修改即可(未实操)
这个文件里面的内容最开始是其他的内容,不知道coredump文件会显示在哪
产生的coredump文件如下:

分析coredump文件
可参考这个链接:
https://zhuanlan.zhihu.com/p/514516021
如果想知道具体在哪一行出现了错误,需要在编译的时候加-g,不然只知道是在哪个函数出现了错误
未加-g编译时,gdb是显示成这样

加了-g时,gdb会显示成这样
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)