Как я могу проанализировать идентификатор родительского метода, который вызывается из другого потока, с помощью Thread.cIOS

Программируем под IOS
Ответить
Гость
 Как я могу проанализировать идентификатор родительского метода, который вызывается из другого потока, с помощью Thread.c

Сообщение Гость »


Я пытаюсь реализовать небольшое аналитическое решение для автоматического отслеживания вызовов по всей базе кода.

К сожалению, я понятия не имею о низкоуровневых вещах ОС и даже не знаю, как эти вещи гуглить. Поэтому мне непонятны следующие моменты:
[*]На что указывают столбцы в stacktrace? Что такое адрес загрузки памяти? [*]Что такое обратный адрес?
Я выяснил, что столбец 0x1234 с индексом 2 в трассировке стека является уникальным идентификатором вызывающего метода, а столбец с индексом 3 — уникальным идентификатором его родительского метода. Таким образом, я могу отслеживать дочерние и родительские методы внутри одного потока. (Иногда кажется, что этот 0x1234 используется повторно, но это нормально, потому что на этом этапе я уже отследил трассировку.)
[*]Как отслеживать родительский метод внутри дочернего метода, когда он вызывается из другого потока? [*]Как я могу увидеть в трассировке стека, что дочерний метод завершился через замыкание?
При отладке в Xcode я вижу эту информацию на боковой панели Xcode, поэтому она должна где-то быть!


Изображение


Кроме этого, я заблудился. Пожалуйста, помогите?

Я также прикрепил сюда код этого примера:
импортировать фундамент структура Собака { функция коры () { print("CallStackSymbols для '\(#function)':") print("\t\(Thread.callStackSymbols.joined(разделитель: "\n\t"))")) DispatchQueue.global(qos:.userInitiated).async { кораInBackground() } } функция barkInBackground() { print("CallStackSymbols для '\(#function)':") print("\t\(Thread.callStackSymbols.joined(разделитель: "\n\t"))")) } } пусть собака = Собака() собака.лай() спать(1000)
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»