一般来讲,对非法地址的访问会导致应用程序收到由系统发送的sigsegv信号,默认情况下,函数对于这个信号的处理是退出。
但是为了方便调试,我们可以自己设置处理函数,使用signal函数。
这里比较重要的一点是,按照流程,cpu取完一条指令时,pc会指向下一条指令,那么如果我们指定函数对sigsegv信号不处理的话,那么就可以跳过出现错误的语句而直接执行下一条语句。
但是linux系统对于从数据异常返回时,会把pc重新指向该语句,所以根本没办法跳过这句话。
2022-02-02 12:34:27
一般来讲,对非法地址的访问会导致应用程序收到由系统发送的sigsegv信号,默认情况下,函数对于这个信号的处理是退出。
但是为了方便调试,我们可以自己设置处理函数,使用signal函数。
这里比较重要的一点是,按照流程,cpu取完一条指令时,pc会指向下一条指令,那么如果我们指定函数对sigsegv信号不处理的话,那么就可以跳过出现错误的语句而直接执行下一条语句。
但是linux系统对于从数据异常返回时,会把pc重新指向该语句,所以根本没办法跳过这句话。