查看错误栈¶
得到转储文件后可以通过以下方式读取转储文件内容
Windows:
通过visual Studio打开转储文件,得到转储文件生成时的程序运行状态。需要有可执行程序oscar.exe,源代码和pdb文件fenixdb_release.pdb。
Linux:
通过google-breakpad中的md2core工具将转储文件转换为core文件,通过gdb打开core文件得到转粗文件生成时的程序运行状态。需要有带符号信息的可执行程序和源代码。
md2core 转储文件 > core文件
gdb 后台可执行程序 core文件
所有平台:
通过google-breakpad中的minidump_stackwalk工具将转储文件打印成可读的文本格式。需要有数据库可执行程序的符号文件。数据库后台发布时会同步生成符号文件,并放在特定的目录结构中。由于minidump_stackwalk只有linux版本,因此在windows下产生的dmp文件也需要放到linux上查看。
minidump_stackwalk 转储文件 符号文件目录 > dump.txt
示例:
- 在windows下查看调用栈信息
首先执行sql语句转储当前调用栈信息:
alter system set events (immediate trace name errorstack);
然后到指定的转储目录(默认安装目录的dump目录)下,使用Visual Studio打开转储文件并执行,就可以看到sql语句执行时的调用栈。
在linux下查看发生某个错误时的错误栈
首先执行sql语句:
alter system set events (850395213 trace name errorstack forever);
使用md2core文件将转储生成的dmp文件转换为gdb支持的core文件:
md2core 5f96543d-8fb0-999d-58b9c3b1-6bc934d1.dmp > stack.core
使用gdb查看错误栈:
gdb /opt/ShenTong/bin/oscar stack.core
使用minidump_stackwalk将dmp文件转为可读形式
首先执行sql语句:
alter system set events (850395213 trace name errorstack forever);
使用minidump_stackwalk文件将转储生成的dmp文件转换为可读文件:
minidump_stackwalk 5f96543d-8fb0-999d-58b9c3b1-6bc934d1.dmp ./symbols >
stack.txt
最后执行sql语句对错误栈进行关闭:
alter system set events (850395213 trace name errorstack off);