为Mac OS X安装未处理异常过滤器

3

Windows有SetUnhandledExceptionFilter API,可以使应用程序处理崩溃。Mac平台上是否有类似的东西?我在developer.apple.com上没有找到类似的内容...

谢谢!

2个回答

3

看一下Smart Crash Reports以及它的工作原理。请注意,这是一个非常恶意的黑客攻击。


谢谢,但我并不希望通过第三方将我的崩溃路由到我这里。我只需要提供自己的异常处理程序,在那里我可以做我感兴趣的事情,所以需要类似于Windows的SetUnhandledExceptionFilter的东西。 - psychotik

3

嗯...这看起来非常有前途,但实际上它不会真正起作用。这是我拥有的: 全局函数:void GlobalFilter (NSException *pException) { // do something }在后应用程序初始化代码中:NSSetUncaughtExceptionHandler(&GlobalFilter);为了测试,我编写了一个方法:wstring foo = NULL; foo->size();我的程序崩溃了,但我的处理程序从未被调用...... 有什么想法为什么这可能不起作用,或者我做错了什么? - psychotik
1
是的,你的程序没有生成异常,而是生成了总线错误。针对此错误的标准信号处理程序基本上会在CrashReporter目录中创建一个文件。如果要执行其他操作,您需要为SIGSEGV和SIGBUS安装新的信号处理程序。有关更多信息,请参见signal(2)的man页面。当未捕获Objective-C异常终止应用程序时,NSSetUncaughtExceptionHandler()可以提供帮助。 - Jason Coco
明白了...谢谢!我想我应该添加两种类型的处理程序。谢谢! - psychotik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接