达梦数据库core文件和gdb工具使用

1、core环境配置

查看core文件是否开启,未开启则开启

limit -a

Core file size 为0代表关闭core文件,unlimited代表开启core文件。

vi /etc/security/limits.conf

添加

或者 vi /etc/profile

增加:ulimit -c unlimited

source /etc/profile

再执行ulimit -a

2、core文件的名称和路径配置

设置pid作为文件扩展名:

echo "1">/proc/sys/kernel/core_uses_pid

修改临时生效core文件路径

mkdir /corefile

chmod 777 /corefile

echo "/corefile/%e.core.%p">/proc/sys/kernel/core_pattern

sysctl -w kernel.core_pattern=/corefile/core-%e-%p-%t

永久生效core文件路径

echo "kernel.core_pattern=/corefile/%e.core.%p" >> /etc/sysctl.conf

3、验证core文件配置是否生效

执行ps -ef | grep dmserver,强行kill达梦进程,查看是否生成core文件

4、dmrdc工具

对于数据库产生的core文件,dm提供dmrdc工具进行core文件的分析读取,此工具可以提取出core文件中的完整sql语句。

例如:./dmrdc /corefile/core-dmserver-17554-1713423571

生成core_tmp文件,查看即可获得问题SQL

5、gdb工具

gdb是linux下一个强大的程序调试工具,调试达梦程序的core文件:gdb dmserver core

例如:

gdb dmserver /corefile/core-dmserver-4166-1669464222

bt命令来查看异常位置

info threads查看所有线程

前面有*为当前线程,LWP后面为线程号

set logging命令详解

退出gdb:quit

6、core分析思路

(1):服务器core

服务端主动 core 表示程序因某种资源不够或已知原因而发生的“自杀”行为,一般在达梦数据库运行日志或 core 堆栈中会出现 dm_sys_halt 的信息,这种情况下通过堆栈和日志信息便可以确定发生问题的原因。

(2):未知异常原因导致的 core

这一类是服务端程序被迫发生的,例如内存访问越界、非法指针、堆栈溢出等问题,主要表现为达梦数据库运行日志检查点突然中断,没有任何信息,但这一类问题的原因往往是由某个 sql 语句引发的,只需要找到对应的 sql 语句即可。

core存储路径(不同操作系统不一样,麒麟和中科方德的)

达梦技术社区:eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值