Если вы делаете отладку, возможно, используйте отладчик. Сценарии GDB довольно просты в написании и использовании. Поддерживать их параллельно вашему коду может быть непросто.
Редактировать - Добавление анекдота:
Программное обеспечение, которое я поддерживаю, включает в себя отечественную систему контрольно-измерительных приборов. Макросы используются для постановки в очередь сообщений журнала, а параметры конфигурации определяют, какие классы сообщений регистрируются, и уровень детализации, который необходимо регистрировать. Поток обрабатывает очередь регистрации, сбрасывая сообщения в файл и вращая файлы, когда они становятся слишком большими (что они обычно делают). Система предоставляет много деталей, но часто слишком часто она предоставляет огромные файлы, которые наши инженеры службы поддержки должны просматривать в течение нескольких часов, чтобы найти что-нибудь полезное.
Теперь я использовал GDB только для диагностики ошибок несколько раз, но для этих проблем у него было несколько приятных преимуществ по сравнению с системой регистрации. Сценарии GDB позволили мне собирать новые данные инструментов, не добавляя новые строки инструментов и не развертывая новую сборку моего программного обеспечения на клиенте. GDB может генерировать сообщения из сторонних библиотек (необходимо для отладки в openssl в один момент). GDB не оказывает влияния на время выполнения программного обеспечения, когда оно не используется. GDB довольно хорошо печатает содержимое объектов; система ведения журнала на уровне кода требует записи новых макросов, когда новые объекты должны регистрировать свои состояния.
Одним из недостатков было то, что сгенерированные мной скрипты GDB не имели явного отношения к исходному коду; исходный файл и сценарий GDB были разработаны независимо друг от друга. В идеале, изменения в исходном файле должны влиять и обновлять скрипт gdb. Одна из идей состоит в том, чтобы поместить в код специально отформатированные комментарии, а язык сценариев должен передать исходные файлы для создания файла сценария отладчика для исходного файла. Наконец, заставьте make-файл выполнить этот скрипт во время цикла сборки.
Это забавное упражнение, чтобы подумать о возможности использования GDB для этой цели, но я должен признать, что, вероятно, существуют лучшие решения на уровне кода.