Символическая точка останова при вызове 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"); } 
  • IOS Xcode Проверка Xcode.app
  • Xcode: ошибка кода приложения iPhone
  • Xcode не запускает приложение на симуляторе. (Приложение неожиданно вышло)
  • Установка Xcode6 USB - сопряжение запрещено политикой на устройстве
  • Как интегрировать Crashlytics со статической библиотекой
  • Создание приложения для библиотеки видеогалереи. Нужен совет для хранения данных
  • AnyObject не работает в Xcode8 beta6?
  • Отладка встроенной инфраструктуры не работает должным образом при отладке суперклассов или расширений / реализаций протокола
  • Раскадровка UIViewController с несколькими классами
  • Как получить секрет клиента в API Youtube для клиента iOS?
  • Невозможно прочитать символы для /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.2.1
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.