Символическая точка останова при вызове dispatch_async со специальной очередью

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

Есть ли способ установить символическую точку останова на dispatch_async с условием, которое могло бы проверить, является ли аргумент очереди отправки такой же, как для какой-либо другой очереди, к которой у меня есть доступ?

2 Solutions collect form web for “Символическая точка останова при вызове dispatch_async со специальной очередью”

Вот как установить условную точку останова. (Я не делал условий в очередях, я делаю здесь предположение, что равенство указателя будет Just Work ™.)

Сначала получите адрес 0x12345678 вам очереди, скажем, это 0x12345678 . Затем создайте точку останова:

 breakpoint set -n dispatch_async -c '$register == 0x12345678' 

Замените $register выражением, специфичным для архитектуры.

Обновлено, чтобы показать $arg1 от комментария Джима Ингама

имитатор

  • x86: *(id*)($esp+4)
  • x86-64: $arg1 (aka $rdi )

устройство

  • armv7: $arg1 (aka $r0 )
  • arm64: $arg1 (aka $x0 )

Если вы установите метку в своей очереди, вы можете просто установить условную точку останова на соответствие строки в исполняемом блоке. Когда-нибудь я просто зарегистрирую это так.

 if (!strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(myDispatchQueue)){ printf("Booyah!\n"); } 
  • XCode: Копировать заголовки: Public vs. Private vs. Project и symbolcation
  • Как я могу получить переменную окружения из Xcode в моем приложении
  • Программирование последовательного порта iPhone
  • Приложение Xcode застряло в ландшафтном режиме
  • Xcode Storyboard Serious Issue Going Blank?
  • Как добавить ссылку на папку в моем проекте Pod в post install?
  • Добавить git commit SHA в приложение iOS
  • Несколько статических библиотек с общей зависимостью - iOS
  • Как я могу определить, когда мой UITextView редактируется, а затем вызывает действие?
  • Нужно ли нам проверять * .xcuserstate?
  • Как скомпилировать автоматически созданные приложения для iOS?
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.