以编程方式对地址进行符号化

时间:2017-08-23 11:40:09

标签: ios macos dwarf symbolicate

我正在寻找一种在我自己的应用程序(macOS)中表示外部应用程序符号(iOS)的方法,假设我有DSYM和系统符号。

Xcode表示app地址和系统框架地址(UIKit,Foundation等) atos需要一个图像文件,并且可以对该图像中的地址进行符号化。

我希望在自己的应用中表示大量地址。地址表示各个时间点的堆栈跟踪。我也想象征系统框架地址。

我找到atosl,它使用dwarf.hlibdwarf.h重新实现atos不同程度的成功 - 但这似乎是一种非常低级的方法。

有没有其他方法可以同时表示大量地址?

1 个答案:

答案 0 :(得分:0)

这是我在测试中使用的符号(需要XCTest):https://github.com/avito-tech/Mixbox/blob/db3206c95b71f35ae6032ff9b0baff13026608f4/Frameworks/TestsFoundation/Reporting/FileLineForFailureProvider/StackTrace/ExtendedStackTraceEntryFromStackTraceEntryConverterImpl.swift

我使用代码突出显示Xcode中的测试失败,而无需测试人员在任何地方通过file: StaticString = #file, line: UInt = #line。此样例代码的可读性较差,也没有太多理由使用该样例,因为理想情况下,Xcode应该能够突出显示测试失败的堆栈跟踪...

请注意,存在问题。如果您在执行代码的机器上没有源,则它不表示符号。也许可以很快解决,我什至没有尝试过。

代码中还包含有关其他选项的注释:atos,lldb,CoreSymbolication。我认为CoreSymbolication是您要使用的。我给您的解决方案很简单,更多地依赖XCTest,可配置性较差,还有其他一些缺陷。