原文作者:我辈理想
版权声明:文章原创,转载时请务必加上原文超链接、作者信息和本声明。
文章目录
首先需要在ubuntu系统安装gdb工具。
sudo apt-get install gdb
gdb是c的工具,常用命令如下:
where # 哪里出问题
bt # 查看栈信息
q # 退出gdb
如果安装了python-dbg,还可以使用以下命令:
py-bt # 查看栈信息
py-list
py-up # 上一帧(py级别的帧)
py-down # 下一帧(py级别的帧)
info thread # 线程信息
thread <id> # 切换到某个线程
thread apply all py-list # 查看所有线程的py代码位置
ctrl-c # 中断
一、命令检查
1.python执行py文件
python3 xxx.py
2.gdb执行py文件
gdb python3
run xxx.py
二、进程检查
1.检查所有python程序
ps -x | grep python
2.使用gdb检查进程
sudo gdb -p 1199469
三、core文件检查
pwd # 查看当前目录
# 结果:/home/ubuntu
echo /home/ubuntu/core.%p> /proc/sys/kernel/core_pattern # 调整core文件的位置和格式
gdb core-file core.id # gdb查看core文件
1.开启core文件存储能力
core文件默认是不存储的,ulimit -c 可以改变当前连接,具备文件存储能力。
ulimit -a # 显示目前资源限制的设定
ulimit -c 1024 # 设定core文件的最大值,单位为区块
ulimit -a # 再次查看资源限制
2.core文件存储位置
core存储在文件/proc/sys/kernel/core_pattern中,可以直接读取
cat /proc/sys/kernel/core_pattern
以下是参数列表:
%p - insert pid into filename 添加pid(进程id)
%u - insert current uid into filename 添加当前uid(用户id)
%g - insert current gid into filename 添加当前gid(用户组id)
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加导致产生core的命令名