Любые ссылки на динамический анализ кода?
Вчера я читал о методах отладки и нашел Valgrind действительно интересным. Кажется, использовать методы динамического анализа кода. И я перешел по ссылке из оригинальной ссылки на что-то еще, называемое Path Profiling.
Я пробовал поискать в Google, но, думаю, я использую неправильные термины, чтобы найти хорошую ссылку на эти понятия. Может кто-нибудь предложить хороший ресурс, учитывая, что у меня нет опыта работы с компиляторами и языками программирования?
1 ответ
Профилирование пути интересно как теоретическая проблема. gprof
также интересно, потому что он имеет дело с графами вызовов, циклическими подграфами и тому подобным. Есть хорошие алгоритмы для манипулирования этой информацией и распространения измерений по всей структуре.
Все это может заставить вас думать, что это работает (хотя они никогда не говорят, что это работает) - для поиска общих проблем с производительностью.
Однако предположим, что ваша программа зависает. Как вы находите проблему?
Что я делаю, так это включаю его в бесконечный цикл, а затем прерываю (пауза), чтобы посмотреть, что он делает. Я смотрю на код на каждом уровне стека вызовов, потому что я знаю, что цикл находится где-то в стеке. Если это не очевидно, я просто делаю шаг вперед, пока не увижу, что это повторяется, и тогда я знаю, в чем проблема. Я подозреваю, что почти любой сделает это.
Фактически, если вы остановите программу, пока она занимает слишком много времени, и несколько раз исследуете ее состояние, вы можете не только найти бесконечные циклы, но и практически любую проблему, когда программа работает дольше, чем вам бы хотелось.
Существуют инструменты профилировщика, основанные на этой концепции, такие как Zoom и LTProf, но за мои деньги ничто не дает такого понимания, как полное понимание репрезентативных снимков.
Вы не найдете хороших ссылок на эту технику, потому что (как ни странно) не многие знают об этом, и опубликовать ее слишком просто.
На эту тему можно сказать гораздо больше.
На самом деле, FWIW, я "опубликовал" статью об этом, но она была рецензирована только редактором, и я не думаю, что кто-то на самом деле ее читал: Dunlavey, "Настройка производительности с затратами на уровне команд, полученными из выборки из стека вызовов", ACM SIGPLAN Уведомления 42, 8 (август 2007 г.), стр. 4-8.