Любые ссылки на динамический анализ кода? - PullRequest
3 голосов
/ 19 сентября 2010

Вчера я читал о методах отладки и нашел Valgrind действительно интересным.Кажется, использовать методы из динамического анализа кода.И я перешел по ссылке из оригинальной ссылки на что-то еще, называемое Path Profiling .

. Я попробовал поискать в Google, но, думаю, я использую неправильные термины, чтобы найти хорошую ссылку на эти концепции.Может кто-нибудь предложить хороший ресурс, учитывая, что у меня нет опыта работы с компиляторами и языками программирования?

1 Ответ

4 голосов
/ 19 сентября 2010

Path Profiling интересен как теоретическая проблема.gprof также интересно, потому что он имеет дело с графами вызовов, циклическими подграфами и тому подобным.Есть хорошие алгоритмы для манипулирования этой информацией и распространения измерений по всей структуре.

Все это может заставить вас думать, что это работает (хотя они никогда не говорят, что это работает) - для поиска общих проблем производительности.

Однако предположим, что ваша программа зависает.Как вы находите проблему?

Что я делаю, это включаю ее в бесконечный цикл, а затем прерываю (пауза), чтобы посмотреть, что он делает.Я смотрю на код на каждом уровне стека вызовов, потому что я знаю, что цикл находится где-то в стеке.Если это не очевидно, я просто шагаю вперед, пока не увижу, что это повторяется, и тогда я знаю, в чем проблема.Я подозреваю, что почти каждый мог бы сделать это.

На самом деле, если вы остановите программу, пока она занимает слишком много времени, и несколько раз исследуете ее состояние, вы сможете найти не только бесконечные циклы, но и практически любую проблему, когда программа запускается.дольше, чем хотелось бы.

Существуют инструменты профилирования, основанные на этой концепции, такие как Zoom и LTProf , но за мои деньги ничто не дает столь же глубокого понимания, как тщательнопонимание репрезентативных снимков.

Вы не найдете хороших ссылок на эту технику, потому что (как ни странно) не многие знают о ней, и ее слишком просто опубликовать.

Там значительнобольше на эту тему.


На самом деле, FWIW, я «опубликовал» статью об этом, но она была рецензирована только редактором, и я не думаю, что кто-то действительно читалit: Dunlavey, «Настройка производительности с учетом затрат на уровне команд, полученных из выборки из стека вызовов», Уведомления ACM SIGPLAN 42, 8 (август 2007 г.), стр. 4-8.

...