2012-08-07 25 views
3

我注意到,在我的應用程序的OS X崩潰日誌中,第一部分之一是「特定於應用程序的回溯」。它顯示了這樣的事情:什麼是崩潰日誌中的「Application Specific Backtrace」?

Application Specific Backtrace 1: 
0 CoreFoundation      0x00007fff8acef716 __exceptionPreprocess + 198 
1 libobjc.A.dylib      0x00007fff8d723470 objc_exception_throw + 43 
2 CoreFoundation      0x00007fff8ad7df07 -[__NSDictionaryM setObject:forKey:] + 135 
3 My App        0x00000001030c6f72 My App + 81778 
4 My App        0x00000001030c7969 My App + 84329 
5 AppKit        0x00007fff8c3d5afa -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] + 1012 
6 AppKit        0x00007fff8c5ec1d6 -[NSNib _instantiateNibWithExternalNameTable:] + 610 
7 AppKit        0x00007fff8c5ebf43 -[NSNib instantiateNibWithOwner:topLevelObjects:] + 254 
8 AppKit        0x00007fff8c5eb4f7 -[NSViewController loadView] + 184 
9 AppKit        0x00007fff8c593349 -[NSViewController view] + 41 
10 My App        0x00000001030cae69 My App + 97897 
11 My App        0x00000001030cbb3a My App + 101178 
12 AppKit        0x00007fff8c590322 -[NSTableView _sendDelegateHeightOfRow:] + 130 
13 AppKit        0x00007fff8c5900db -[NSTableView _uncachedRectHeightOfRow:] + 197 
14 AppKit        0x00007fff8c58ff2c -[_NSTableRowHeightStorage _cacheRowHeights] + 163 
15 AppKit        0x00007fff8c54a6f5 -[_NSTableRowHeightStorage _ensureRowHeights] + 80 
16 AppKit        0x00007fff8c5680cb -[_NSTableRowHeightStorage computeRowAtPoint:] + 38 
17 AppKit        0x00007fff8c567fd9 -[NSTableView rowAtPoint:] + 306 
18 AppKit        0x00007fff8c566af7 -[NSTableView rowsInRect:] + 375 
19 AppKit        0x00007fff8c597ca4 _NSTVVisibleRowsForUpdate + 673 
20 AppKit        0x00007fff8c5971e5 -[NSTableRowData _unsafeUpdateVisibleRowEntries] + 96 
21 AppKit        0x00007fff8c597001 -[NSTableRowData updateVisibleRowViews] + 119 
22 AppKit        0x00007fff8c56f0fb -[NSTableView viewWillDraw] + 165 
23 AppKit        0x00007fff8c44cbed __22-[NSView viewWillDraw]_block_invoke_0 + 307 
24 CoreFoundation      0x00007fff8ace80b6 __NSArrayEnumerate + 582 
25 AppKit        0x00007fff8c44c92d -[NSView viewWillDraw] + 244 
26 AppKit        0x00007fff8c44bf84 -[NSView _sendViewWillDrawInRect:clipRootView:] + 1525 
27 AppKit        0x00007fff8c4183f1 -[NSView displayIfNeeded] + 1044 
28 AppKit        0x00007fff8c4c429e -[NSClipView _immediateScrollToPoint:] + 7852 
29 AppKit        0x00007fff8c4c2342 -[NSClipView scrollToPoint:] + 268 
30 AppKit        0x00007fff8c58acdd -[NSScrollView scrollClipView:toPoint:] + 426 
31 AppKit        0x00007fff8c4c20cc -[NSClipView _scrollTo:animateScroll:flashScrollerKnobs:] + 1626 
32 AppKit        0x00007fff8c39d579 -[NSClipView _scrollTo:animate:] + 28 
33 AppKit        0x00007fff8caab2a1 __31-[NSScrollView _snapRubberBand]_block_invoke_0610 + 1989 
34 AppKit        0x00007fff8ca2412a ____NSPeriodicInvokerScheduled_block_invoke_0 + 57 
35 libdispatch.dylib     0x00007fff8a013f3d _dispatch_call_block_and_release + 15 
36 libdispatch.dylib     0x00007fff8a0100fa _dispatch_client_callout + 8 
37 libdispatch.dylib     0x00007fff8a0149ab _dispatch_after_timer_callback + 22 
38 libdispatch.dylib     0x00007fff8a0100fa _dispatch_client_callout + 8 
39 libdispatch.dylib     0x00007fff8a0122d7 _dispatch_source_invoke + 691 
40 libdispatch.dylib     0x00007fff8a011349 _dispatch_queue_invoke + 72 
41 libdispatch.dylib     0x00007fff8a0150cd _dispatch_main_queue_callback_4CF + 220 
42 CoreFoundation      0x00007fff8ac9181e __CFRunLoopRun + 1614 
43 CoreFoundation      0x00007fff8ac90dd2 CFRunLoopRunSpecific + 290 
44 HIToolbox       0x00007fff85323774 RunCurrentEventLoopInMode + 209 
45 HIToolbox       0x00007fff85323512 ReceiveNextEventCommon + 356 
46 HIToolbox       0x00007fff853233a3 BlockUntilNextEventMatchingListInMode + 62 
47 AppKit        0x00007fff8c414fa3 _DPSNextEvent + 685 
48 AppKit        0x00007fff8c414862 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128 
49 AppKit        0x00007fff8c40bc03 -[NSApplication run] + 517 
50 AppKit        0x00007fff8c3b0656 NSApplicationMain + 869 
51 My App        0x00000001030b4554 My App + 5460 
52 ???         0x0000000000000002 0x0 + 2 

我知道這是在主線程上運行的代碼,但尚未它在這一節中,而不是在線程0回溯顯示,這看起來是這樣的:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 
0 libsystem_kernel.dylib   0x00007fff8588d212 __pthread_kill + 10 
1 libsystem_c.dylib    0x00007fff8e1fab34 pthread_kill + 90 
2 libsystem_c.dylib    0x00007fff8e23edfa abort + 143 
3 libc++abi.dylib     0x00007fff888abf87 abort_message + 257 
4 libc++abi.dylib     0x00007fff888a9936 default_terminate() + 28 
5 libobjc.A.dylib     0x00007fff8d7238f3 _objc_terminate() + 91 
6 libc++.1.dylib     0x00007fff8694c8fe std::terminate() + 20 
7 libobjc.A.dylib     0x00007fff8d72365e objc_terminate + 9 
8 libdispatch.dylib    0x00007fff8a01010e _dispatch_client_callout + 28 
9 libdispatch.dylib    0x00007fff8a0149ab _dispatch_after_timer_callback + 22 
10 libdispatch.dylib    0x00007fff8a0100fa _dispatch_client_callout + 8 
11 libdispatch.dylib    0x00007fff8a0122d7 _dispatch_source_invoke + 691 
12 libdispatch.dylib    0x00007fff8a011349 _dispatch_queue_invoke + 72 
13 libdispatch.dylib    0x00007fff8a0150cd _dispatch_main_queue_callback_4CF + 220 
14 com.apple.CoreFoundation  0x00007fff8ac9181e __CFRunLoopRun + 1614 
15 com.apple.CoreFoundation  0x00007fff8ac90dd2 CFRunLoopRunSpecific + 290 
16 com.apple.HIToolbox    0x00007fff85323774 RunCurrentEventLoopInMode + 209 
17 com.apple.HIToolbox    0x00007fff85323512 ReceiveNextEventCommon + 356 
18 com.apple.HIToolbox    0x00007fff853233a3 BlockUntilNextEventMatchingListInMode + 62 
19 com.apple.AppKit    0x00007fff8c414fa3 _DPSNextEvent + 685 
20 com.apple.AppKit    0x00007fff8c414862 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128 
21 com.apple.AppKit    0x00007fff8c40bc03 -[NSApplication run] + 517 
22 com.apple.AppKit    0x00007fff8c3b0656 NSApplicationMain + 869 
23 com.mycompany.myapp    0x00000001030b4554 0x1030b3000 + 5460 

「Application Specific Backtrace」的含義是什麼?爲什麼主代碼中沒有包含回溯?

(要清楚,我不問如何調試代碼,我只是在尋找在大跌的結構和含義的解釋日誌本身。謝謝!)

+0

+1這真的很奇怪。我之前遇到過這個問題,但從未注意到「Application Specific Backtrace」的實際含義。環顧四周(這裏沒有太多內容),我唯一能猜到的是線程0留給低級進程,UIKit運行到線程1上。因此ASB 0中的錯誤是庫,框架等問題,ASB 1中的錯誤將成爲UIKit問題。在這種情況下,你的setObject:forKey:。我可以進入左邊的領域,但這是我能想出的。希望這可以幫助! – random 2012-08-07 18:20:19

回答

6

這是多麼例外處理作品。你在創建NSException的主線程上有一個異常(它包含有關異常的所有信息,包括當前的堆棧跟蹤)。拋出一個異常對象後,控制權被傳遞給調用堆棧中最接近的處理程序,在拋出和捕獲點之間展開堆棧。如果未捕獲到異常,則會被一個稱爲未捕獲異常處理程序的函數攔截。未捕獲的異常處理程序始終會導致程序退出,但可能會在執行此任務之前執行一些任務。 默認的未捕獲異常處理程序在退出程序之前將消息記錄到控制檯。

所以你的情況專用回溯是當異常被拋出堆棧跟蹤和螺紋0墜毀::調度隊列:com.apple.main線程是堆棧跟蹤,當應用程序被打死。

注意了這一點堆棧跟蹤是相同的:

10 libdispatch.dylib    0x00007fff8a0100fa _dispatch_client_callout + 8 
11 libdispatch.dylib    0x00007fff8a0122d7 _dispatch_source_invoke + 691 
12 libdispatch.dylib    0x00007fff8a011349 _dispatch_queue_invoke + 72 
13 libdispatch.dylib    0x00007fff8a0150cd _dispatch_main_queue_callback_4CF + 220 
14 com.apple.CoreFoundation  0x00007fff8ac9181e __CFRunLoopRun + 1614 
15 com.apple.CoreFoundation  0x00007fff8ac90dd2 CFRunLoopRunSpecific + 290 
16 com.apple.HIToolbox    0x00007fff85323774 RunCurrentEventLoopInMode + 209 
17 com.apple.HIToolbox    0x00007fff85323512 ReceiveNextEventCommon + 356 
18 com.apple.HIToolbox    0x00007fff853233a3 BlockUntilNextEventMatchingListInMode + 62 
19 com.apple.AppKit    0x00007fff8c414fa3 _DPSNextEvent + 685 
20 com.apple.AppKit    0x00007fff8c414862 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128 
21 com.apple.AppKit    0x00007fff8c40bc03 -[NSApplication run] + 517 
22 com.apple.AppKit    0x00007fff8c3b0656 NSApplicationMain + 869 
+0

優秀的答案,使總體感覺。謝謝! – 2012-08-07 23:17:02