Если вы относитесь серьёзно к исследованию Mac OS X, то просто обязаны иметь XCode, даже если вы и не занимаетесь программированием. В комплект XCode кроме средств разработки входят полезные утилиты, компиляторы и прочее. Например, без него вы не сможете скомпилировать какой-либо пакет, поставляемый в виде исходных текстов. Конечно же, большинство популярных программ доступны уже в виде готовых пакетов с инсталляторами (mysql), но всегда может понадобится что-то уникальное.
XCode бесплатен. Это меня очень удивило, я помню цены на средства разработки под Microsoft Windows. Разрабатывать под Mac OS X вы можете без дополнительных затрат, но для разработки под iPhone уже нужно быть участником “The iPhone Developer Program” ($99 в год за стандартную подписку). Но вопрос не о том. Для получения XCode нужно зарегистрироваться в Apple Developer Connection (бесплатно), а затем списать Xcode 3.x.x Developer DVD размером порядка 750 MB. Детали о XCode можно посмотреть на сайте Apple.
Сегодня я хочу рассказать об Instruments. С помощью него можно собирать в режиме реального времени данные по дисковой активности, использованию CPU и памяти.
- Вы помните несколько моих статей, в которых я использовал о DTrace:
- Отладка файловой активности процессов с помощью DTrace, или как написать деинсталлятор
- Поиск метода установки Mac OS X под VMWare Fusion
Instruments по сути является тем же DTrace, но с графическим интерфейсом.
Например, посмотрим файловую активность какой-либо программы. Запускаем Instruments, сразу выдаётся предложение выбрать шаблон. Выбираем “Mac OS X”/”File Activity”:
Я хочу посмотреть на программу “Mobile Partner” для 3G-модема Huawei E219 – в ней указано несколько десятков профилей разных мобильных операторов, а больной интерфейс не позволяет удалить ненужные профили. Поэтому я хочу найти, где находится её конфиг, чтобы убрать хлам вручную.
Выбираем программу для запуска:
Затем жмём большую красную кнопку на панели инструментов – точно не промахнётесь, разве что на мониторе Apple Cinema Display 30″ это будет тяжело :)
Программа действительно убогая… Столько регулярных операций чтения/записи я нигде, кроме программ Huawei не видел. Пожалуй, если есть такая возможность, то не стоит пользоваться таким софтом.
Захожу в опции, удаляю один из профайлов, выхожу из опций. Обычно это приводит к сохранению конфигурации. В секции “Read/Writes” смотрю последние операции.
Вот оно:
# Caller Function FD Path Bytes 38559 Java_java_io_FileOutputStream_writeBytes write 67 /Applications/Mobile Partner.app/Contents/Resources/config/data/SysProfileTemp.xml 8192
Но суффикс “Temp” навевает мысль о том, что файл временный и нужно искать операцию переименования в секции “Directory I/O”:
# Caller Function Path To 2191 Java_java_io_UnixFileSystem_rename0 rename /Applications/Mobile Partner.app/Contents/Resources/config/data/SysProfileTemp.xml /Applications/Mobile Partner.app/Contents/Resources/config/data/SysProfile.xml
Открываем файл:
open "/Applications/Mobile Partner.app/Contents/Resources/config/data/SysProfile.xml"
Да, так оно и есть – это именно тот файл, в котором гениальные разработчики Huawei вбили полторы сотни профайлов мобильных операторов. Отдельная “благодарность” за разработку программы управления модемом на Java.
К сожалению, оказалось, что те же китайские гении каждый раз этот файл перезаполняют из других xml. Можно было бы повторить сессию в Instruments для определения файлов-источников, но я нашёл их простым поиском через grep.
Я продемонстрировал работу Instruments для выполнения конкретной задачи. Конечно же, область его применения несоизмеримо шире.