gpt4 book ai didi

ios - 如何在xcode中通过调用栈查找相关代码?

转载 作者:行者123 更新时间:2023-11-28 17:57:25 27 4
gpt4 key购买 nike

在那里,

本人初接触ios,获取崩溃日志如下。

我的问题是,“[ICLRootViewController addHomeScreenViewController] + 373”中的“+ 373”是什么意思?如何在 ICLRootViewController.m 中找到相关行?第 373 行与函数 addHomeScreenViewController() 完全没有关系。

2017-02-09 16:23:28.117 Demo[98834:4764956] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Can't find view controller.'*** First throw call stack:(    0   CoreFoundation                      0x0000000111f77d4b __exceptionPreprocess + 171    1   libobjc.A.dylib                     0x0000000110dfb21e objc_exception_throw + 48    2   CoreFoundation                      0x0000000111f7be42 +[NSException raise:format:arguments:] + 98    3   Foundation                          0x000000010cda066d -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195    4   Demo                               0x0000000109bb63c5 -[ICLRootViewController addHomeScreenViewController] + 373    5   Demo                               0x0000000109bc252e -[ICLRootViewController onNewsButtonClicked] + 542    6   Demo                               0x0000000109a2b9ce __51-[ICLHomeScreenToolbarViewController initWebToolbar]_block_invoke_2 + 62    7   Demo                               0x0000000109dee0f1 -[ICLWebViewToolbar didClickNewsButton:] + 305    8   UIKit                               0x000000010f5b18bc -[UIApplication sendAction:to:from:forEvent:] + 83    9   UIKit                               0x000000010f737c38 -[UIControl sendAction:to:forEvent:] + 67    10  UIKit                               0x000000010f737f51 -[UIControl _sendActionsForEvents:withEvent:] + 444    11  UIKit                               0x000000010f736e4d -[UIControl touchesEnded:withEvent:] + 668    12  UIKit                               0x000000010f61f545 -[UIWindow _sendTouchesForEvent:] + 2747    13  UIKit                               0x000000010f620c33 -[UIWindow sendEvent:] + 4011    14  Demo                               0x0000000109a96a80 -[ICLInteractionDetectionWindow sendEvent:] + 688    15  UIKit                               0x000000010f5cd9ab -[UIApplication sendEvent:] + 371    16  UIKit                               0x000000010fdba72d __dispatchPreprocessedEventFromEventQueue + 3248    17  UIKit                               0x000000010fdb3463 __handleEventQueue + 4879    18  CoreFoundation                      0x0000000111f1c761 __CFRUNLOICL_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17    19  CoreFoundation                      0x0000000111f0198c __CFRunLoopDoSources0 + 556    20  CoreFoundation                      0x0000000111f00e76 __CFRunLoopRun + 918    21  CoreFoundation                      0x0000000111f00884 CFRunLoopRunSpecific + 420    22  GraphicsServices                    0x000000011473ba6f GSEventRunModal + 161    23  UIKit                               0x000000010f5afc68 UIApplicationMain + 159    24  Demo                               0x000000010981da1f main + 111    25  libdyld.dylib                       0x0000000113ccd68d start + 1

非常感谢!

最佳答案

  • 373 是从回溯中列出的函数符号开始的偏移量。崩溃报告器无法访问调试信息,因此无法将地址行转换为源代码行。

但是,如果您有出现此崩溃的二进制文件并且它是 dSYM,您可以手动解决这个问题。由于 macOS 和 iOS 随机加载位置,您将无法从崩溃中的绝对地址中分辨出任何内容。这就是为什么以“符号 + 偏移量”形式使用它很方便。因此,将您的二进制文件和 dSYM 加载到调试器中并执行:

(lldb) disassemble -m -n "-[ICLRootViewController addHomeScreenViewController]"

该命令将反汇编传递给 -n 的函数的代码参数,显示此方法的混合源代码和程序集 View 。汇编输出将与偏移量一起列出,所以只需找到 <+373>它上面的源代码行会告诉你它来自哪里。如果这是经过优化的代码,源 -> 地址映射有时会令人困惑,但混合 View 也可能会帮助您理清这一点。

关于ios - 如何在xcode中通过调用栈查找相关代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42132658/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com