多语言展示
当前在线:901今日阅读:60今日分享:41

Linux开发之崩溃处理

运行在Linux的服务端程序会时不时的崩溃,仅仅依赖日志来查找错误代码时不够的,而且有时因为程序崩溃导致无法写下日志。因此要有个更安全的方法程序崩溃以及记录堆栈就显得非常重要
方法/步骤
2

编译编译时要加上-g 和-rdynamic两个参数,如:g++ main.cpp -o testdump -g -std=c++11 -rdynamic注意: 不加 -g, addr2line程序无法打印行号;不加 -rdynamic, backtrace无法打印完整信息,可能会没有和函数名称相关的信息;

3

使用 Addr2line 将函数地址解析为函数名Addr2line 工具(它是标准的 GNU Binutils 中的一部分)是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。这种功能对于将跟踪地址转换成更有意义的内容来说简直是太棒了。注意编译程序时需要添加-g选项才可以,也可以添加-Wl 和-map选项。在调用 Addr2line 工具时,要使用 -e 选项来指定可执行映像是 test。通过使用 -f 选项,可以告诉工具输出函数名。例如:addr2line 0x -e test -f

推荐信息