無限ループでポインタを増やしている場合、セグメンテーション違反が発生する場所を予測する方法は?
アラーム シグナル ハンドラーを使用でき、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;
}