Символизирующие адреса программно
Я ищу способ символизировать символы внешних приложений (iOS) внутри моего собственного приложения (macOS), предполагая, что у меня есть DSYM и системные символы.
Xcode символизирует как адреса приложений, так и адреса системной платформы (UIKit, Foundation и т. Д.)atos
требуется файл изображения и может символизировать адреса из этого изображения.
Я хочу символизировать большое количество адресов в моем собственном приложении. Адреса представляют собой трассировки стека в различные моменты времени. Я хотел бы также обозначить адреса системной платформы.
Я нашел Атосл, который использует dwarf.h
а также libdwarf.h
переопределить atos
с различной степенью успеха - однако это похоже на очень низкоуровневый подход.
Есть ли другие способы обозначить большое количество адресов одновременно?
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, менее настраиваемое, имеет некоторые другие недостатки.