Вывести полный поток управления через GDB, включая значения переменных - PullRequest
3 голосов
/ 18 апреля 2009

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 09 октября 2009

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

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

2 голосов
/ 19 апреля 2009

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

Бампо-версия этого может быть сделана с да (1) или ожидаемо (1) .

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

1 голос
/ 14 июля 2009

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

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

...