Любые ссылки на динамический анализ кода?
=========================================

Вчера я читал о методах отладки и нашел Valgrind действительно интересным. Кажется, использовать методы из динамического анализа кода. И я перешел по ссылке из оригинальной ссылки на что-то еще под названием[Профилирование пути](http://pages.cs.wisc.edu/~larus/Talks/path_talk/index.htm).

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

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

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

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

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

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

Существуют инструменты профилировщика, основанные на этой концепции, такие как[Увеличить](http://www.rotateright.com/) а также[LTProf](http://www.lw-tech.com/)Но за мои деньги ничто не дает такого понимания, как полное понимание представительных снимков.

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

[На эту тему можно сказать гораздо больше.](https://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343)

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