栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C/C++ 处理coredump文件

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C/C++ 处理coredump文件

文章目录
  • 前言
  • 一、准备
  • 二、命令:objcopy
  • 三、调试core文件


前言

线上项目在宕机时会产生core文件,外网没有源码,通过符号表可以看到程序崩溃在哪个文件哪行。


一、准备

先写一个可以宕机的代码

#include 
#include 
void testcore(){
        std::vector a;
        std::vector b;
        a[1] = 0;
        std::cout << a[200] << std::endl;
}
int main(){
        testcore();
        return 0;
}

g++ -o Server helloworld.cpp -g
-g 带调试信息

二、命令:objcopy

由于带编译信息可执行文件比较大,所有使用objcopy命令来生成两个比较小的文件
1.生成调试信息文件objcopy --only-keep-debug Server S.symbol
2.生成不含调试信息的可执行文件 objcopy --strip-debug Server SamllServer
将这连个文件同时放到外网,调试的时候使用S.symbol

三、调试core文件

使用ulimit -u unlimited(光使用这个命令 效果是本次登录有效)就会在宕机的时候产生core文件
使用gdb gdb -c core.* --se S.symbol 然后在gdb中使用bt 就可以看到哪一行
效果图:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/676336.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号