当你的程序在运行的过程中访问到空指针,那么linux系统就会出现非法访问内存错误,通常称为段错误(segmeng fault)
段错误分为用户态和内核态两种情况:
当用户态程序出现访问非法地址出现段错误时,程序退出并答应“segment fault”提示信息,这种情况下不会导致系统崩溃,修改好程序之后还可以再次运行。
但是发生在内核态的段错误,会导致系统崩溃,死机现象,要再次用就只能重启机器才可以。所以应尽量避免内核台访问非法指针出现段错误。在编写内核态代码的时候,在读写指针之前要养成先判断指针是否有效然后在赋值的习惯。
但是如果真的在内核台出现的段错误,那么如何快速有效的定位段错误出现的位置。下面介绍两种方法帮助快捷找出段错误所在位置。
1.使用xxx-xxx-objdump命令把你的运行的代码反汇编。
我的实验平台是ba,根据不同的平台选用不用的交叉工具链
Ba-linux-objdump -D -S exe(.o&hex……)> objdump.txt
上面的命令解释:<