簡體   English   中英

SIGABRT在iOS 5模擬器中不顯示堆棧跟蹤

[英]SIGABRT doesn't show stack trace in iOS 5 simulator

使用iOS 5在iPad模擬器中運行我的應用程序時,如果出現SIGABRT錯誤,則不會像在iOS 4.3中那樣顯示完整的堆棧跟蹤

此外,調試器不會在發生錯誤的行中停止,而是在應用程序的main方法中停止。

這使得找到問題變得更加困難......

有誰知道如何使iOS 5的行為與4.3一樣? 可能嗎?

這就是iOS 5所展示的

2011-10-21 10:45:18.528 KBNavigator[9283:17603] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull doubleValue]: unrecognized selector sent to instance 0x2b4ccd8'
*** First throw call stack:
(0x2ab6052 0x28d6d0a 0x2ab7ced 0x2a1cf00 0x2a1cce2 0x14ff1c 0x14e93c 0x10cdf1 0x105c88 0x133b40 0x135935 0x1532548 0x1534722 0x13e47c7 0x13e42c1 0xd1e3d66 0x13e728c 0x13e72b8 0x13e79ab 0x13ec288 0xd1e3ece 0xb5262 0xcf55f 0xb72c3 0x141d64e 0x141cc1c 0x144356d 0x142dd47 0x1444441 0x14444f9 0x163bc68 0x13fb4a1 0x13fc12b 0x163b4c7 0x1424427 0x142458c 0xd1fe280 0x14245cc 0xecdaf 0xf14e2 0xecb9d 0xd5d0e 0x135e88 0x107098 0x12d870 0x2ab7ec9 0x135a5c2 0x135a55a 0x13ffb76 0x140003f 0x13ff2fe 0x137fa30 0x137fc56 0x1366384 0x1359aa9 0x28b9fa9 0x2a8a1c5 0x29ef022 0x29ed90a 0x29ecdb4 0x29ecccb 0x28b8879 0x28b893e 0x1357a9b 0x18656 0x2be5 0x1)
terminate called throwing an exception

這適用於iOS 4.3

2011-10-21 10:46:40.066 KBNavigator[9381:14003] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSNull doubleValue]: unrecognized selector sent to instance 0x20d15e8'
*** Call stack at first throw:
(
0   CoreFoundation                      0x020645a9 __exceptionPreprocess + 185
1   libobjc.A.dylib                     0x021b8313 objc_exception_throw + 44
2   CoreFoundation                      0x020660bb -[NSObject(NSObject) doesNotRecognizeSelector:] + 187
3   CoreFoundation                      0x01fd5966 ___forwarding___ + 966
4   CoreFoundation                      0x01fd5522 _CF_forwarding_prep_0 + 50
5   KBNavigator                         0x0014ff1c -[GXControlWheel controlToData:] + 1292
...
)
terminate called throwing an exception

調試這些錯誤的最簡單方法是添加一個觸發Objective-C異常的斷點。 你可以從這個菜單中這樣做:

例外菜單

(帽子Naveen Shan

如果這僅用於調試目的,一種解決方案是在NSException中設置一個斷點,在該位置拋出它。 唯一的問題是它也會因處理的異常而中斷,但它不會影響代碼。

另一種解決方案是使用NSSetUncaughtExceptionHandler設置異常處理程序。 只有在未按名稱提示處理異常時才會觸發此操作。

這對我來說是什么,我在這里找到與創建NSZombies有關的東西

  1. 轉到Xcode 4中的項目
  2. 可以在Scheme編輯器中設置環境變量(在菜單欄中找到Product - > Edit scheme ...)
  3. 將變量命名為NSZombieEnabled並將其值設置為YES。
  4. 在調試模式下運行您的應用程序 您可能會收到一條消息發送到解除分配的實例...消息,並且調試器在錯誤的行停止。 此信息導致問題。
  5. 准備好后,通過將YES更改為NO來禁用NSZombieEnabled。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM