分析手段:
coredump机制:coredump是一种基于异步信号的内存信息捕获机制,可以提供用户态的内存信息镜像,方便开发者分析使用,是常用的调试手段,具体流程如下图:

1. 应用程序在执行过程中某些严重错误(比如:访问非法内存地址,非法硬件指令等)导致内核产生crash信号。
2. 信号处理函数do_coredump判断是否满足coredump条件,如当前进程是否已打开dumpable属性。
3. 确认条件满足,创建core文件,并调用core_dump函数收集当前进程的现场信息。
4. 将相关信息以ELF文件格式保存在core文件中。
工具介绍:
GDB是GNU开源组织发布的一个强大的UNIX及类UNIX环境下的用户态程序调试工具,是C/C++程序调试的主流工具。大部分OS中已涵盖gdb,可直接使用dnf/yum install安装
使用方法:
1、直接调试应用程序
说明:program为待调试的可执行文件。
2、调试应用程序的core文件
说明:core为程序非法执行后core dump后产生的文件。
3、GDB调试运行中的程序
说明:PID为需要调试的程序PID号。
4、GDB调试命令
说明:上述三种方式进入GDB调试页面,会出现(gdb),command是需要执行的调试命令(部分命令有简写),*args是部分调试命令需要的参数。
5、常用参数如下:
分析手段:
coredump机制:coredump是一种基于异步信号的内存信息捕获机制,可以提供用户态的内存信息镜像,方便开发者分析使用,是常用的调试手段,具体流程如下图:
1. 应用程序在执行过程中某些严重错误(比如:访问非法内存地址,非法硬件指令等)导致内核产生crash信号。
2. 信号处理函数do_coredump判断是否满足coredump条件,如当前进程是否已打开dumpable属性。
3. 确认条件满足,创建core文件,并调用core_dump函数收集当前进程的现场信息。
4. 将相关信息以ELF文件格式保存在core文件中。
工具介绍:
GDB是GNU开源组织发布的一个强大的UNIX及类UNIX环境下的用户态程序调试工具,是C/C++程序调试的主流工具。大部分OS中已涵盖gdb,可直接使用dnf/yum install安装
使用方法:
1、直接调试应用程序
说明:program为待调试的可执行文件。
2、调试应用程序的core文件
说明:core为程序非法执行后core dump后产生的文件。
3、GDB调试运行中的程序
说明:PID为需要调试的程序PID号。
4、GDB调试命令
说明:上述三种方式进入GDB调试页面,会出现(gdb),command是需要执行的调试命令(部分命令有简写),*args是部分调试命令需要的参数。
5、常用参数如下:
命令
用途
r
运行程序,当遇到断点后,程序会在断点处停止运行,等待用户输入下一步的命令。
c
继续执行,到下一个断点处。
n
单步跟踪程序,当遇到函数调用时,不进入此函数体,直接调用函数。
s
单步调试如果有函数调用,则进入函数。
until
运行程序直到退出循环体。
finish
运行程序,直到当前函数完成返回。
call
用程序中可见的函数,并传递“参数”。
l
查看源码;list n 查看n行前后10行;list func 查看函数源码。
b n
在n行处加断点。
b func
在函数func()的入口处设置断点。
clear n
清除第n行的断点。