如果我们在无限循环中增加一个指针,如何预测分段错误发生在哪里?
我认为我们可以使用警报信号处理程序,它会在每 1 秒后调用一次,它会打印指针指向的地址,这样当发生分段错误时,我们会得到一个非常接近的地址。
有没有更好的解决方案?如果有那么请告诉。提前致谢
代码 :
#define SECOND 1
int *str;
void ALARMhandler(int sig)
{
signal(SIGALRM, SIG_IGN);
printf("ptr=%u \n",*str);
alarm(SECOND); /* set alarm for next run */
signal(SIGALRM, ALARMhandler); /* reinstall the handler */
}
int main()
{
int *ptr;
str=&ptr;
int a;
ptr=&a;
signal(SIGALRM,ALARMhandler);
alarm(SECOND);
for(;;)
{
ptr++;
}
return 0;
}