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

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

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

Ответ 1

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

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

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

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

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

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

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

Намного больше можно сказать по этому вопросу.


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