Вывести полный поток управления через GDB, включая значения переменных

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

Хорошо, причина этого вопроса заключается в идее относительно инструмента отладки. Что он делает, так это При наличии двух разных входов в программу, один из которых вызывает неправильный вывод, а другой - правильный, он сообщит, какая часть потока управления для них различается.

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

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

3 ответа

То, что вы описываете, немного похоже на "отладку трассировки" в gdb. Смотрите внутреннюю справку gdb "help tracepoint". Вы также можете увидеть технический документ здесь: http://sourceware.org/gdb/talks/esc-west-1999/

К сожалению, эта функциональность в настоящее время не реализована для собственной отладки, но я считаю, что CodeSourcery работает над этим.

Расскажите нам немного больше об окружающей среде. Например, dtrace сделает изумительную работу в Solaris или Leopard. gprof это еще одна возможность.

Версию этого можно сделать с помощью yes(1) или ожидаемого (1).

Если вы хотите стать модным, GDB может быть написан на Python в некоторых версиях.

Проверьте это, в отличие от Coverity, Fenris бесплатен и широко используется.

Как автоматически распечатать следующие N выполненных строк в GDB?

Другие вопросы по тегам