首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >目标-C堆栈跟踪

目标-C堆栈跟踪
EN

Stack Overflow用户
提问于 2012-05-26 23:54:46
回答 1查看 6.7K关注 0票数 15

在使用NSAssert()在运行在iPad设备上的Objective应用程序(在调试模式下编译)中引发NSInternalInconsistencyException异常之后,我得到了类似于以下内容的内容:

代码语言:javascript
运行
复制
2012-05-27 02:31:36.830 appname[10821:707] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'reason'
*** First throw call stack:
(0x3800788f 0x33338259 0x38007789 0x371f13a3 0x791a1 0x79555 0x79e03 0x7a44d 0x798d3 0x737fd 0x30e19c8b 0x30e18461 0x30e0ae87 0x30e7b7d5 0x30e18e6d 0x30e127dd 0x30de0ac3 0x30de0567 0x30ddff3b 0x3644122b 0x37fdb523 0x37fdb4c5 0x37fda313 0x37f5d4a5 0x37f5d36d 0x30e1186b 0x30e0ecd5 0x7343f 0x733e4)
terminate called throwing an exception

如何找到有用的堆栈跟踪,它至少给我一个简单的列表,列出在抛出异常之前调用的所有函数?

Xcode也没有帮助:

bt in lldb显示:

代码语言:javascript
运行
复制
(lldb) bt
* thread #1: tid = 0x1c03, 0x30c6832c libsystem_kernel.dylib`__pthread_kill + 8, stop reason = signal SIGABRT
    frame #0: 0x30c6832c libsystem_kernel.dylib`__pthread_kill + 8
    frame #1: 0x331f920e libsystem_c.dylib`pthread_kill + 54
    frame #2: 0x331f229e libsystem_c.dylib`abort + 94
    frame #3: 0x37682f6a libc++abi.dylib`abort_message + 46
    frame #4: 0x3768034c libc++abi.dylib`_ZL17default_terminatev + 24
    frame #5: 0x33338356 libobjc.A.dylib`_objc_terminate + 146
    frame #6: 0x376803c4 libc++abi.dylib`_ZL19safe_handler_callerPFvvE + 76
    frame #7: 0x37680450 libc++abi.dylib`std::terminate() + 20
    frame #8: 0x37681824 libc++abi.dylib`__cxa_rethrow + 88
    frame #9: 0x333382a8 libobjc.A.dylib`objc_exception_rethrow + 12
    frame #10: 0x37f5d50c CoreFoundation`CFRunLoopRunSpecific + 404
    frame #11: 0x37f5d36c CoreFoundation`CFRunLoopRunInMode + 104
    frame #12: 0x30e1186a UIKit`-[UIApplication _run] + 550
    frame #13: 0x30e0ecd4 UIKit`UIApplicationMain + 1080
    frame #14: 0x0007343e appname`main + 86 at main.m:5

这样做更好,但仍然没有多大用处。我还是不知道是什么导致了异常被抛出。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-27 00:03:02

有几件有用的事情:

  1. ,如果您使用Xcode运行应用程序,添加一个异常断点。在断点导航器(命令-6)中,单击最左下角的“+”以添加。这将在抛出异常的行上暂停执行,并允许您检查当前范围、堆栈等。如果使用gdb,则使用
  2. ;如果使用lldb,则使用bt打印回退跟踪
  3. ,如果使用lldb,则使用thread backtrace代替

票数 41
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10770648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档