如何读取 Objective-C 堆栈跟踪

2023-12-25

我有以下堆栈跟踪:

0 MyApp 0x000833a3 +[TFCrashHandler backtrace] + 26
1 MyApp 0x000836bd TFSignalHandler + 28
2 libsystem_c.dylib 0x33eac727 _sigtramp + 34
3 ??? 0x00000002 0x0 + 2
4 MyApp 0x000803f1 msgpack_unpack_next + 112
5 MyApp 0x0007faeb +[MessagePackParser parseData:] + 74
6 MyApp 0x0007f84b -[NSData(NSData_MessagePack) messagePackParse] + 26
7 MyApp 0x000254c3 +[Http get:params:cacheMins:msgPack:complete:] + 146
...

我想知道如何阅读它:

  • 我假设我是从下往上走的,例如第 7 行称为第 6 行,称为第 5 行,等等。
  • 第 4 行的“+ 112”是什么意思?这是代码文件中崩溃的行号吗?
  • '???' 是什么意思? 3号线是什么意思?

多谢


0 MyApp 0x000833a3 +[TFCrashHandler backtrace] + 26

崩溃产生于+[TFCrashHandler backtrace]+ 26;来自落在该符号位置的任何指令 + 26 字节。

如果那确实是堆栈跟踪的底部并且它在那里崩溃了,那么TCrashHandler掩盖了真正的崩溃。真正的崩溃看起来是上面的几帧。

1 MyApp 0x000836bd TFSignalHandler + 28

TFSignalHandler 就是所谓的+backtrace。

2 libsystem_c.dylib 0x33eac727 _sigtramp + 34

呃……信号蹦床。应用程序收到信号,并且蹦床被设置为调用 TFSignalHandler()。

在某些情况下,可能会在随机线程上调用信号处理程序。 IE。这个特定的崩溃与解析器无关而与其他地方的崩溃有关的可能性很小。然而,在不了解有关解析器的更多信息的情况下,我怀疑它是否针对恶意输入进行了强化(这肯定会导致这样的崩溃)。

3 ??? 0x00000002 0x0 + 2

堆栈无法解码。忽略。无意义的。最好的情况;编译器优化的后果。最坏的情况下;有人在堆栈上大便,而回溯机制无法弄清楚发生了什么(极不可能——通常,堆栈大便会溅到阻止完整回溯的程度)。

4 MyApp 0x000803f1 msgpack_unpack_next + 112

噢...棘手。有人正在使用 C 来解析东西。它崩溃了。从入口点到函数的任何指令都是 112 字节boom。但是,事实并非如此,因为它调用了信号处理程序并由信号处理程序处理;这仍然是一个boom但信号处理程序已经有效地销毁了额外的法医证据。

“trickzy”评论提到,针对一大堆 C 的优化编译器最终可能会崩溃框架,以至于崩溃可能发生在远低于此框架的函数中。

5 MyApp 0x0007faeb +[MessagePackParser parseData:] + 74

MessagePack Parser 正在解析时出现了严重错误。

6 MyApp 0x0007f84b -[NSData(NSData_MessagePack) messagePackParse] + 26
7 MyApp 0x000254c3 +[Http get:params:cacheMins:msgPack:complete:] + 146

啊……是的……有人从 HTTP 中抓取了一些数据,但数据格式错误,导致崩溃。

底线;解析器收到虚假输入并崩溃。有一个信号处理程序试图通过创建回溯来提供帮助,但显然并没有真正透露更多信息。一个长期的替代方案是,信号是在其他地方生成的,并且随机选择该线程来处理它 - 如果您能够一致地重新创建此崩溃,则不太可能出现随机线程信号情况。

除非您捕获了输入数据或者可以以某种方式猜测 msgpack_unpack_next() 如何崩溃,否则如果不提供更多信息,您就运气不佳。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何读取 Objective-C 堆栈跟踪 的相关文章

随机推荐

  • Javascript 性能 - Dom Reflow - Google 文章

    有人可以向我证明给出的建议吗here http code google com speed articles javascript dom html 复制如下 关于在更改 dom 元素之前删除它们然后重新插入它们的速度更快 作为证明 我想看
  • R 中的加权随机数生成

    我正在尝试生成一组固定范围内的 100 个随机整数 一个可以由 1 到 3 之间的 100 个数字组成 并具有获得 1 2 和 3 之一的特定概率 任何帮助 将不胜感激 See sample 例如 sample c 1 2 3 size 1
  • OCaml中的fold_tree

    你可能知道 OCaml中有一些高阶函数 例如fold left fold right filter等 在我的函数式编程课程中 引入了名为fold tree的函数 它类似于fold left right 不是在列表上 而是在 二元 树上 它看
  • .NET 4.5 异步等待和重载方法

    我有一个异步方法 public async Task
  • 不同的闭包在快速保留周期中给出不同的结果

    我正在阅读 Apple 的 Swift 编程语言指南 在关于闭包的强引用循环的部分中 我尝试了一种不同类型的闭包 但它没有给出预期的输出 class HTMLElement let name String let text String l
  • scipy.io 的导入问题

    我一直在尝试开始使用 scipy 但该软件包给我带来了一些问题 本教程很大程度上依赖于 scipy io 但是当我导入 scypi 并尝试使用 scipy io 时 出现错误 In 1 import scipy In 2 help scip
  • 线程安全哈希映射?

    我正在编写一个应用程序 它将返回一个 HashMap 给用户 用户将获得此地图的参考 在后端 我将运行一些线程来更新地图 到目前为止我做了什么 我已经创建了所有后端线程 因此共享一个公共通道来更新 MAP 因此 在后端 我确信并发写入操作不
  • 在自动 Teams 消息中标记团队成员

    我有一个用于待命轮换的 Excel 电子表格 在 的帮助下这个答案 https stackoverflow com a 73039284 9124454 我能够使用 Power Automate 触发一条自动 Microsoft Teams
  • 使用 os.walk 时,有没有办法确定子目录是否位于 python 的同一文件系统中?

    我正在编写一个 python 脚本 它使用 os walk 来遍历目录树 我想赋予它跳过安装到不同文件系统的子目录的能力 这样find xdev做 检查 os walk 的文档 我没有看到任何参数可以让它自动执行此操作 我可以用什么东西来自
  • 片段测试错误:android.view.InflateException:二进制 XML 文件行 #16:二进制 XML 文件行 #16:错误膨胀类 <未知>

    我正在尝试按照以下说明测试片段 https developer android com training basics fragments testing https developer android com training basic
  • 仅将混合模式应用于投影

    可以混合吗only元素的投影与它重叠的元素的颜色 例如 我有一个元素与另一个元素重叠 顶部的元素有一个浅灰色的阴影 下面的元素是黑色的 我不希望对任何一个元素本身应用任何混合 但希望重叠元素 的投影与下面元素的颜色混合 在阴影落在重叠元素上
  • mysql 使用子查询更新查询

    谁能看出下面的查询有什么问题吗 当我运行它时 我得到 1064 你的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解要使用的正确语法 第 8 行的 a where a CompetitionID Competiti
  • 通用电子邮件验证器

    我想创建一个表单 用户将在其中输入他的电子邮件 我想验证客户端的电子邮件格式 Angular 2 中有通用的电子邮件验证器吗 注意 类似于AngularJS 验证器 https docs angularjs org api ng input
  • marklogic mlcp 自定义转换拆分聚合文档为多个文件

    我有一个 JSON 聚合 文件 我想使用 mlcp 将其拆分并作为多个文档摄取到 MarkLogic 中 我想要使用 javascript 在摄取过程中转换内容 http docs marklogic com guide mlcp impo
  • 同时声明多个变量的更优雅的方式

    要 同时 声明多个变量 我会这样做 a b True False 但如果我必须声明更多的变量 它就会变得越来越不优雅 a b c d e f g h i j True True True True True False True True
  • 如何以编程方式更改 Window 注册表中的值?

    我需要以编程方式将 HKEY CURRENT USER Software Intuit QBWebConnector 中找到的 Level 字符串更改为 Verbose 做这个的最好方式是什么 C bat 文件 我以前从来没有修改过注册表
  • GCM 的注册 ID 重复

    我们有一个使用 GCM 的应用程序 当用户首次打开应用程序时 应用程序会检查共享首选项以查看用户之前是否注册过 如果没有 则从 GCM 获取注册 ID 并将其存储到共享首选项中 还有一个存储用户 ID 和注册 ID 的第 3 方服务器 我阅
  • Javascript URL 深度(级别)

    是否可以使用 Javascript 获取 url 深度 级别 如果我有这个网址 www website com site product category item gt 深度 4 www website com site product
  • Spring Security 中的 beans.NotReadablePropertyException

    我对 Spring Security 非常陌生 我捡起来了this https rads stackoverflow com amzn click com 1847199747书并尝试执行代码 当我这样做时 我得到了 org springf
  • 如何读取 Objective-C 堆栈跟踪

    我有以下堆栈跟踪 0 MyApp 0x000833a3 TFCrashHandler backtrace 26 1 MyApp 0x000836bd TFSignalHandler 28 2 libsystem c dylib 0x33ea