Существует недокументированная (частная) инфраструктура для OS X, называемая MobileDevice. Он используется для получения данных с устройств iOS. Я занимаюсь написанием приложения, которое его использует, и я хочу, чтобы можно было извлечь количество циклов зарядки на батарею устройства iOS. Функция для этого в MobileDevice называется AMDeviceCopyValue(). Он принимает 3 аргумента: адрес устройства (просто целое число), домен значения, которое вы хотите скопировать (строка C), и ключ значения, которое вы хотите скопировать (другая строка C.)LLDB: печатать переменные, переданные функции каждый раз, когда он вызывается?
Поскольку эта структура не задокументирована, трудно найти, какие строки вам нужно использовать. Некоторые из них размещены в Интернете, но не для подсчета циклов заряда. Еще одна программа, которую я нашел в Интернете уже делает это, iCopyBot: http://www.icopybot.com/blog/check-ipad-iphone-battery-charge-cycle-count-without-jailbreaking.htm
Я хотел бы запустить iCopyBot в LLDB, а затем LLDB распечатать домена и ключевых аргументов, iCopyBot переходит к AMDeviceCopyValue() каждый раз, когда он называется. Структура чувствительна к срокам, поэтому я не могу остановить ее в середине исполнения - ей нужно просто распечатать аргументы, которые были переданы и продолжаются.
Может ли кто-нибудь показать мне, что я должен сделать? Я уже успел запустить iCopyBot в LLDB, и каждый раз, когда вызывается эта функция, я устанавливаю точку останова, но команда «frame variable» не печатает ничего для меня (документация для LLDB, которую я получил от веб-сайта Apple предполагает, что он должен напечатать аргументы, которые были переданы в ... он не работает для меня)
Вы можете установить точку останова на 'AMDeviceCopyValue' и распечатать аргументы, пока программа является приостановленным. –
@ H2CO3 - Мне удалось заставить его приостановить, когда вызывается функция, но «переменная кадра» ничего не распечатывает для меня.И поскольку это функция C, о которой мы говорим, я не думаю, что имена переменных, используемые в исходном коде, будут храниться в скомпилированном коде, не так ли? – ArtOfWarfare
, только если модуль, в котором находится данная функция, был скомпилирован с помощью отладочных символов. –