2013-11-01 4 views
6

Я хотел бы отобразить собственное сообщение об ошибке во время выполнения в Xcode в коде C/C++. Это можно использовать, например, для пользовательской функции assert().Отображение сообщения об ошибке выполнения на определенной строке в Xcode

Я хотел бы, чтобы отобразить сообщение инлайн, как SenTestingKit делает:

SenTestingKit

Сейчас единственное, что я могу сделать, это использовать __builtin_trap останавливаться на правильной линии. Но никакое настраиваемое сообщение об ошибке не отображается.

__builtin_trap

+0

Ваш вопрос непонятен. Попробуйте предоставить дополнительную информацию или примеры. –

+0

@AdamBurry Я обновил свой вопрос. – Wojtek

+0

Будет ли постоянное сообщение в порядке? Если это так, используйте сообщение #pragma (ваше сообщение здесь из утверждения) и поднимите SIGTRAP или используйте __builtin_trap на этой строке. – xryl669

ответ

0

Я не знаком с Xcode, но вот как это делается почти везде. Ваш заказ будет утверждают выглядеть следующим образом:

#define MY_ASSERT(a1, a2, desc, ...) {\ 
    PrintAssertMessage(...);   \ 
    DebugBreak();     \ 
} 

В окнах уже есть функция DebugBreak в win32 API. В Linux и большинстве других систем, запускающих IA32/X64, вы можете просто вызвать int 3, который является ловушкой точки прерывания.

asm ("int 3"); 

Я читал, что в Xcode это:

__asm {int 3} 

или

__asm__("int $3") 

или

__asm__("trap") 

В любом случае это должно быть окружено макрос, который отключает утверждать в отладочных сборках также макро at определяет, как вызвать точку останова.

+0

Существует даже готовая к использованию функция ('__builtin_trap'), которая работает как кроссплатформенная ловушка. И конечно, вы можете добавить вывод сообщений или консольный вывод. Но это * не отвечает на исходный вопрос, вот как отобразить это сообщение inline в Xcode. –

Смежные вопросы