2010-08-09 3 views
2

У меня есть пользователь, жалующийся, что мое приложение занимает много процессорного времени, когда оно должно быть бездействующим. Это приложение Cocoa на Mac OS Leopard. Мне бы хотелось, чтобы фоновый поток периодически захватывал трассировки стека основного потока и регистрировал их. В качестве альтернативы, если бы я мог запустить программу командной строки, чтобы захватить все стеки потоков (или, еще лучше, график вызовов с информацией профилирования ЦП), он мог бы это сделать и отправить мне результаты. Я знаю, что в XCode есть профилирование центрального процессора, но эта проблема воспроизводится только на машине пользователя, поэтому XCode не является вариантом (я не хочу просить его установить его).Профилирование профилей приложения Cocoa в поле

Я не могу найти инструмент командной строки, который бы удалял следы стека в OSX, а также не мог найти API для доступа к стекам других потоков. Я думаю, GDB может это сделать, но это очень сложно объяснить пользователю.

ответ

2

Сообщите пользователю, чтобы он запускал Монитор активности (в/Приложения/Утилиты). В Activity Monitor ваш пользователь может выбрать строку, соответствующую вашему приложению, и нажать кнопку «Sample» на панели инструментов. Это займет 10-секундный образец вашего приложения. Затем он может сохранить это на диск и отправить вам файл.

Редактировать: Если вы хотите версию с командной строкой, посмотрите/usr/bin/sample. Он действительно делает то же самое, хотя Activity Monitor должен быть намного проще для конечного пользователя.

+0

Это замечательно. Спасибо, Кевин! – George