по дизайну, в среде, в которой я работаю прямо сейчас. Я не могу использовать отладчик, чтобы попытаться обнаружить ошибки, поэтому почти всегда, когда мне нужно отлаживать функциональность, я в конечном итоге выводя некоторую информацию.Как реализовать выровненную систему отладки?
Чтобы сделать это, я сделал следующее:
#ifdef DEBUG
#define printd(x) printf x
#else
#define printd(x)
#endif
Так что, когда мне нужно напечатать некоторую информацию отладки я использую printd()
вместо printf()
.
Проблема, которую я обнаружил, заключается в том, что мне нужна система с выравниванием, есть сообщения, которые могут иметь важное значение на определенном уровне отладки, но не имеют значения при отладке других частей кода.
Так что мой вопрос в том, как я могу реализовать систему отладки с выравниванием? Я ценю простоту, я имею в виду, я предпочитаю свою реальную систему, чем при использовании большого количества кода или запутывающего кода. Что-то вроде printd(level, format, ...)
было бы потрясающе.
Есть веские основания для обеспечения того, чтобы код всегда расширяется так, что компилятор всегда компилирует код отладки технического обслуживания. Используйте 'if (0) {... debug printing ...}' или эквиваленты. Это значительно снижает вероятность того, что отладка будет нарушена, когда вы ее активируете, что может быть годами после последнего раза. –
@Johnathon: На самом деле, я немного упростил код, который он разместил. мой фактический макрос отладки расширяется до некоторого кода, определяется ли debug или нет. один урок за раз. –
@Johnathon: Кроме того, построение отладки и розничной торговли при каждой проверке решает проблему обслуживания без затрат на раздувание розничного кода с помощью отладочной информации. –