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