3
struct sigaction newSignalAction;
memset(&newSignalAction, 0, sizeof(newSignalAction));
newSignalAction.sa_handler = &SignalHandler;
sigaction(SIGSEGV, &newSignalAction, NULL);
[TestFlight takeOff:@"etc etc etc"];
void SignalHandler(int sig) {
NSLog(@"Boom");
}
我试图执行SIGSEGV
信号:
int *p = NULL;
*p = 1;
但我的处理程序没有被调用。相反,Xcode指出行*p = 1
。
我读过,你不能用信号处理程序打印东西。也许这就是问题所在。什么可以我呢?我听说你应该保存数据 - 所以我想我可以在Documents目录中创建文件。我也试图做到这一点,但文件也没有创建。
您是否尝试过在信号处理程序中设置断点,以查看它是否正在执行?如果没有,你得到的信号可能不是'SIGSEGV'。 – nneonneo
我用你的代码(没有'TestFlight'东西),我得到了'Boom'。我所做的是,我没有在XCode中运行它,而是从终端运行它。 – 3329