Символизирующие адреса программно

Я ищу способ символизировать символы внешних приложений (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, менее настраиваемое, имеет некоторые другие недостатки.

Другие вопросы по тегам