Я пишу реализацию алгоритма с использованием Java. До OS X 10.7 я использовал Shark Profiler для профилирования своей реализации, которая работала довольно хорошо. Тем не менее, новые инструменты больше не находят имена процедур. Я уже пытался запустить приложение java с аргументами виртуальной машины для shark (а именно -agentlib: Shark), но они неизвестны для 10.7, и я не смог найти такой agentlib для инструментов.
Есть идеи о том, как я могу прикрепить имена процедур к именам символов (которые являются шестнадцатеричными числами) в Insturments? Я использую Eclipse Indigo, если это что-то меняет.
Спасибо!
Редактировать: Пока ничего не изменилось с OS X Mountain Lion.
Редактирование # 2: Обновление от (?) Разработчика через репортер об ошибках Apple:
dtrace в прошлом поддерживала стеки Java, хотя я, честно говоря, не могу сказать, была ли поддержана поддержка. Это может быть жизнеспособным обходным решением для того, что вы пытаетесь измерить - что в противном случае не является приоритетом для инструментов производительности на данном этапе. Возможно, вы захотите начать с сценария D в /usr/bin/cpu_profiler.d и изменить его, чтобы также собрать jstack.
Редактировать # 3: Хорошо, после еще одного обсуждения выясняется, что сам разработчик не знал, откуда взялся этот скрипт. Очевидно, что профилировщик времени в Instruments так или иначе не использует DTrace, поэтому остается только написать собственный скрипт или инструмент DTrace.
Вы правы, и я прошу прощения. Я не уверен, откуда взялся этот скрипт, и когда я внимательно посмотрел на него, в нем нет действий jstack, так что в любом случае это не то, что вам нужно. Похоже, что единственный вариант профилирования Java, который я могу вам предложить, это DTrace. У DTrace есть поставщик профилей и действие jstack, которое собирает стеки Java. Вы можете использовать «агрегаты» для определения самых тяжелых трассировок стека, и все это работает из командной строки. Документация для DTrace в основном поддерживается Sun, и я бы направил вас к любому учебному пособию по DTrace, поскольку большинство из них посвящено провайдеру профилей.
Несмотря на то, что люди говорят онлайн, Instruments не использует DTrace для всего, в частности для профилирования времени, поэтому я не могу предложить вам быстрое решение в пользовательском интерфейсе Instruments.