Технические вопросы и ответы QA1431

То, как делают я использую, утверждает при отладке?

Q: Когда я отлаживаю, почему мои отказы утверждения не регистрируют или повреждаются?

A: Когда я отлаживаю, почему мои отказы утверждения не регистрируют или повреждаются?

«Проверка», «проверьте» и «потребуйте», чтобы макросы, определенные в <AssertMacros.h>, генерировали «производство» (т.е. неотладка) код по умолчанию. Для них макросы для генерации отладки кодируют это выводы к stderr, и прерывает отладчик, который необходимо было или определить DEBUG к ненулевому или DEBUG_ASSERT_PRODUCTION_CODE, определенному для обнуления, когда включен заголовок <AssertMacros.h>.

Для тестирования это создает новый проект Xcode 2.2 для стандартного инструмента и заменяет содержание значения по умолчанию <main.c> файл со следующим текстом:

Перечисление 1  <main.c>

#include <stdio.h>
#include <AssertMacros.h>

int main( int argc, char* argv[] )
{
    int error = 1;

    verify_noerr( error );
    require_noerr( error, Oops );

    printf("You shouldn't be here!\n");

Oops: ;
    return error;
}

Если Вы разработаете этот проект для настройки отладочного процесса, установите контрольную точку на первой строке основного и затем единственного шага через, то Вы будете видеть, что «verify_noerr» проигнорирован, и «require_noerr» (тихо) перейдет к метке «CantDoAnything». (Примечание: нажмите «консольную» кнопку на панели инструментов окон отладки для открытия gdb области вывода.) Это - ожидаемое поведение для производственного кода. Теперь добавьте «#define DEBUG 1» как первую строку перед тем, чтобы включать, сборкой, выполненным и единственным шагом через код снова. На сей раз консоль отладки должна вывести следующий текст, поскольку Вы продвигаетесь через код:

AssertMacros: error == 0 ,  file: /<your/path/here>/main.c, line: 10 AssertMacros: error == 0 ,  file: /<your/path/here>/main.c, line: 11

Для определения DEBUG в проекте, можно сделать любой из ниже:



История версии документа


ДатаПримечания
30.06.2006

Новый документ, что, как, я включаю, утверждает, таким образом, они регистрируют свои сообщения и/или повреждение, когда я отлаживаю?