Если вы относитесь серьёзно к исследованию 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 и памяти.

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 для выполнения конкретной задачи. Конечно же, область его применения несоизмеримо шире.