2013-11-01 7 views
6

Vorrei visualizzare un messaggio di errore personalizzato durante il runtime in Xcode nel codice C/C++. Questo potrebbe essere usato ad esempio per la funzione assert() personalizzata.Visualizza il messaggio di errore di runtime su una riga specifica in Xcode

Vorrei visualizzare messaggio in linea, come fa SenTestingKit:

SenTestingKit

In questo momento l'unica cosa che posso fare è usare __builtin_trap di fermarsi alla linea corretta. Ma non viene visualizzato alcun messaggio di errore personalizzato.

__builtin_trap

+0

La tua domanda non è chiara. Prova a fornire ulteriori informazioni o esempi. –

+0

@AdamBurry Ho aggiornato la mia domanda. – Wojtek

+0

Un messaggio permanente andrebbe bene? In tal caso, usa il messaggio #pragma (il tuo messaggio qui dall'assert) e aumenta SIGTRAP o usa __builtin_trap su quella riga. – xryl669

risposta

0

Non ho dimestichezza con Xcode, ma ecco come è fatto quasi ovunque. tuo assert personalizzato sarà simile a questa:

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

In Windows c'è già una funzione DebugBreak in Win32 API. In Linux e nella maggior parte degli altri sistemi che eseguono IA32/X64 puoi semplicemente chiamare int 3 che è la trappola per punti di interruzione.

asm ("int 3"); 

ho letto che in Xcode è:

__asm {int 3} 

o

__asm__("int $3") 

o

__asm__("trap") 

In ogni caso questo dovrebbe essere circondata da una macro che disattiva il asserire in build di debug come pure macro a definisce come causare un punto di rottura.

+0

C'è persino una funzione pronta all'uso ('__builtin_trap') che funziona come una trappola multipiattaforma. E certo, puoi aggiungere messagebox o output della console. Ma questo * non * risponde a una domanda originale, cioè come visualizzare questo messaggio in linea in Xcode. –

Problemi correlati