Ios 为什么堆栈展开会在CFRunLoopRunSpecific处停止
例如:在调用堆栈下面 在CFRunLoopRunSpecific处调用堆栈展开停止,为什么它直到main,甚至是空的时候才展开Ios 为什么堆栈展开会在CFRunLoopRunSpecific处停止,ios,macos,stack,crash-reports,Ios,Macos,Stack,Crash Reports,例如:在调用堆栈下面 在CFRunLoopRunSpecific处调用堆栈展开停止,为什么它直到main,甚至是空的时候才展开 Thread 0 name: Dispatch queue: com.apple.main-thread Thread 0 Crashed: 0 libsystem_kernel.dylib 0x36398848 __kill + 8 1 FrogFinder 0x000b5034 0x69000 +
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x36398848 __kill + 8
1 FrogFinder 0x000b5034 0x69000 + 311348
2 CoreFoundation 0x3447e980 __handleUncaughtException + 68
3 libobjc.A.dylib 0x346ce2ca _objc_terminate + 122
4 libc++abi.dylib 0x338a33be _ZL19safe_handler_callerPFvvE + 70
5 libc++abi.dylib 0x338a344a std::terminate() + 14
6 libc++abi.dylib 0x338a481e __cxa_rethrow + 82
7 libobjc.A.dylib 0x346ce22e objc_exception_rethrow + 6
8 CoreFoundation 0x343d453e CFRunLoopRunSpecific + 398
9 CoreFoundation 0x343d439e CFRunLoopRunInMode + 98
10 GraphicsServices 0x30c58fc6 GSEventRunModal + 150
11 UIKit 0x3785573c UIApplicationMain + 1084
12 FrogFinder 0x0006a7e6 0x69000 + 6118
13 FrogFinder 0x0006a7a4 0x69000 + 6052
但是你在这里复制的回溯确实一直到main。你的问题到底是什么?如果您的问题是:“为什么异常不一直到main?”那么答案是CFRunLoop安装了一个catch-all处理程序。我相信Objto-C和C++异常都是.< /p> 但是你复制的回溯确实是一条主线。你的问题到底是什么?如果您的问题是:“为什么异常不一直到main?”那么答案是CFRunLoop安装了一个catch-all处理程序。我相信Objy-C和C++异常都是.< /P> < P>在代码> >尝试/ @ catch / @最后< /COD>块,异常在“代码< >结尾> @最后/<代码>。这通常适用于Objective-C异常,因为它们将原始故障点捕获为内部状态。C++异常不(因为任何类型都可以被抛出)。因此,这里您遇到了
@finally
内部的CFRunLoopRunSpecific
代码,该代码在维护堆栈展开不变量的同时不幸地丢失了原始上下文
< >您可以通过观察运行规则循环中的规则<代码> NSExpExcs. <代码> VC++异常的行为来探索差异,在<代码> >尝试/ @ catch / @最后< /COD>块中,在“代码< >结束时重新抛出异常”@最后/ <代码> > < >代码> >。这通常适用于Objective-C异常,因为它们将原始故障点捕获为内部状态。C++异常不(因为任何类型都可以被抛出)。因此,这里您遇到了
@finally
内部的CFRunLoopRunSpecific
代码,该代码在维护堆栈展开不变量的同时不幸地丢失了原始上下文
< >您可以通过观察在运行循环源中或在代码> CFRunLoopPerformBlock < /COD>中,提高规则< <代码> NSExpExcs. <代码> VS C++异常的行为,查看堆栈跟踪看起来非常好。你的问题也没有多大意义,请进一步澄清你的堆栈跟踪问题。堆栈跟踪看起来非常好。您的问题也没有多大意义,请进一步澄清此堆栈跟踪的问题。