【问题标题】:Find the source for __lldb_unnamed_function4866$$ProjectName查找 __lldb_unnamed_function4866$$ProjectName 的来源
【发布时间】:2013-10-30 17:55:39
【问题描述】:

我的 iOS 程序中出现 EXC_BAD_ACCESS,我怀疑原因在于我的一个匿名块,但其中有很多,我需要稍微缩小候选列表。

堆栈跟踪将当前帧显示为__lldb_unnamed_function4866$$ProjectName。我看不到行号或源文件名。也没有可见的局部变量。调试器显示机器代码指令。这是在后台事件队列上运行的,因此堆栈上的其他任何地方都没有我的代码。

我该如何找出这是什么功能?

【问题讨论】:

  • __lldb_unnamed_function... 是当符号由于已被剥离而不可用时重新符号化给出的。

标签: ios debugging objective-c-blocks


【解决方案1】:

我遇到过类似的情况,虽然我(还)无法解决您的问题,但我想我认识一个可以解决的人。

查看http://www.realmacsoftware.com/blog/block-debugging,了解如何更多地了解有问题的邪恶方块。

这对我没有多大帮助,因为我正在处理崩溃日志,但如果您仍然感兴趣,这将为您提供关于未命名块的尽可能多的信息。

警告,上面的链接让你接触到很多玄学知识,可能会让你觉得有些不足:)

[编辑添加] 还不够好?

通过反汇编搜索并进行一些手动符号化后,我得出的结论是___lldb_unnamed_function是一个红鲱鱼。

我关注了How to manually symbolicate a crash log with atos,它指出了一个完全不同的函数,它来自一个第三方库,并且是崩溃原因的一个非常好的候选者(被带有 badf00d 的愤怒的看门狗杀死。)

在询问的过程中,我还遇到了 hopper,一个很棒的拆解器;我使用演示版来确认可疑代码在做什么,所以我给他们一个名字检查。

【讨论】:

    【解决方案2】:

    尝试通过单击断点导航器cmd + 6 中的加号来设置异常断点。 如需了解调试最佳实践的概述,如果发现考虑Stanford Lecture on iTunes U

    很有用

    【讨论】:

    • 我这样做了,它停在 EXC_BAD_ACCESS,但仍然只有机器代码和原始机器寄存器。但是我现在发现代码不是我的块之一,而是在我使用的封闭源代码库的某个地方。我的示例应用程序出现了同样的错误(我的代码都没有)。向他们提交了错误报告。不过,我想知道__lldb_unnamed_function 是什么以及如何调试它们。
    猜你喜欢
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2019-04-17
    • 1970-01-01
    • 2021-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多