博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
调试与分析
阅读量:6251 次
发布时间:2019-06-22

本文共 1340 字,大约阅读时间需要 4 分钟。

一、获取内核转储

大多数Linux发行版默认关闭内核转储功能,可使用 ulimit -c 查看,-c 表示内核转储文件的大小限制,如果为0,表示未开启。

1、可设置为 ulimit -c unlimited 表示无限制,或设置为其它数值,单位是字节,立即生效。

2、修改 /etc/security/limits.conf 文件,重启后生效。

开启该功能后,当程序异常终止时,会在当前目录下生成 core.pid  的内核转储文件。通过  gdb -c core.pid  ./a.out  就可以启动调试。

修改 coredump 的路径和格式:

1、修改配置文件/etc/sysctl.conf (重启后生效,也可以使用 sysctl -p 命令使其立即生效),如:

kernel.core_pattern = corekernel.core_uses_pid = 0  #是否给 core 文件增加 pid 值的后缀名,为 1 表示增加,为 0 表示不增加

2、使用命令直接改写内存(可立即生效,但重启后失效),如:

echo "core" > /proc/sys/kernel/core_patternecho "0" > /proc/sys/kernel/core_uses_pid

注:core_pattern 可以设置为  /var/core/%e_%t.core ,从而定制了 core 文件的统一路径和命令规则(%e:执行文件名称;%t:产生 core 文件时间戳)

 

 

二、gdb 附加到正在运行的进程

attach pid ,调试完之后,使用 detach 即可以和进程分离。

 

 

加上 -g 选项编译生成的可执行文件(如 a.out),运行后在挂掉时,会向 /var/log/message 文件中写入地址信息(即 IP 指向的值,如 40052e ),通过 addr2line -e a.out 40052e 就可以输出错误发生在哪个文件的哪一行中。注:如果没有向 /var/log/message 写入信息,请查看 syslog 服务有没有启动,CentOS6.4 下,需要 /etc/init.d/rsyslog restart

 

 

 

 

 

 

gcc -pg test.cpp -o test  //编译和链接时都需要加上 -pg 参数

./test  //生成 gmon.out 文件

wget http://gprof2dot.jrfonseca.googlecode.com/git/gprof2dot.py      

wget http://www.graphviz.org/pub/graphviz/stable/SOURCES/graphviz-2.34.0.tar.gz  

gprof ./test gmon.out >report.txt  //生成报告文件

gprof2dot report.txt > test.dot    //生成 dot 文件

dot test.dot -Tpng -o test.png    //将 dot 文件生成图片

 

 

 

转载于:https://www.cnblogs.com/tianyajuanke/p/3374953.html

你可能感兴趣的文章
[LeetCode]题解(python):053-Maximum Subarray
查看>>
SharePoint中的用户信息和检索的有关知识
查看>>
Linux系统在启动过程中grub引导文件丢失的解决方法
查看>>
day15-JavaScript条件语句和函数的定义
查看>>
使用acl网络通信库的 redis c++ 模块开发 redis 应用
查看>>
Geek的入门神器:micropython-能跑python的stm32开发板
查看>>
利用脚本获取mysql的tps,qps等状态信息
查看>>
Python Json数据排序
查看>>
[原创] zabbix学习之旅七:如何远程操作被监控机器
查看>>
第十一周编程总结
查看>>
PhoneURLConnectGEt
查看>>
darknet源码学习
查看>>
dl,dt,dd的用法
查看>>
外面的世界很精彩,然而等待你的人却可能已不在
查看>>
成为一名阿里P7Java架构师需要的技术准备(转载)
查看>>
华为oj 挑7
查看>>
【吴恩达机器学习】学习笔记——1.5无监督学习
查看>>
使用pjax实现类似github无刷新更改页面url
查看>>
移动端头部meta
查看>>
回溯法
查看>>