CORE文件是程序在异常退出或终止时产生的文件,它记录了程序在出问题的情况下的内存、寄存器状态、堆栈指针等信息,可以理解成程序异常时的现场记录,用于事后调试快速定位异常。
达梦的CORE文件生成功能需要开启,具体步骤如下:
cat /etc/sysctl.conf kernel.core_pattern = /dmdata/core/core_%e_%p
在程序出现异常生成core文件之后,可以使用GDB或者dmrdc来对文件进行分析。
GDB是Linux环境下的命令行调试工具。它能让观察程序在运行过程中的每一个内部状态,从而精准定位和修复逻辑错误。
输入以下命令可以进入
GDB 出错的程序 core文件
core文件的文件名会指明是哪个达梦的程序导致出错
GDB常用命令
| 命令 | 说明 |
|---|---|
| bt | 查看当前线程的栈信息 |
| thread apply all bt | 查看所有线程堆栈,通常会由此查看是否有自己实现的类或者so库。一般会把所有线程的详细栈信息输出到一个文件里面如thread_info.txt |
| thread id | 将线程编号为 id 的线程设置为当前线程。 |
| info threads [id…] | 可以查看当前调试环境下存在的线程数以及各线程的具体信息,也可以通过指定线程的编号查看某个线程的具体信息。 |
一般使用bt来对堆栈进行分析
如果需要更多信息的话需要将symbols文件解压到达梦bin目录下
没有symbols文件
有symbols文件
可以看到多了许多信息
堆栈信息从下往上看,一般#1就是致使程序异常的元凶
dmrdc可以得到程序崩溃时的SQL语句,命令为
dmrdc sfile=/dmdata/core/core-dmserver-2848517-8 dfile=/dmdata/core/core_sql
得到sql语句后可以在本地或者测试环境进行测试来排查问题。
文章
阅读量
获赞
