2010-07-05 10 views

risposta

20

Esso accetta solo una stringa come parametro, non un numero intero. Provare qualcosa di simile

sprintf(msgbuf, "My variable is %d\n", integerVariable); 
OutputDebugString(msgbuf); 

Per maggiori informazioni date un'occhiata a http://www.unixwiz.net/techtips/outputdebugstring.html

+4

considerare l'utilizzo di sprintf_s –

+4

+ @ Jon: Ancora meglio ancora, è possibile utilizzare std :: stringstream. –

+1

@Billy ONeal: ho usato std :: stringstream invece di sprintf/sprintf_s come suggerito. Grazie. – understack

0

Per utilizzare OutputDebugString(), fornire char * o const char * come parametro:

OutputDebugString("This is an output"); 
9

Per scopi di debugging è possibile utilizzare _RPT macros.

Per esempio,

_RPT1(0, "%d\n", my_int_value); 
9

Il modo più comune sono a conoscenza è il TRACE macro:

http://msdn.microsoft.com/en-us/library/4wyz8787%28VS.80%29.aspx

Ad esempio:

int x = 1; 
int y = 16; 
float z = 32.0; 
TRACE("This is a TRACE statement\n"); 

TRACE("The value of x is %d\n", x); 

TRACE("x = %d and y = %d\n", x, y); 

TRACE("x = %d and y = %x and z = %f\n", x, y, z); 
+0

Sembra che TRACE sia definita in MFC, che non sto usando. – understack

2

ho trovato questo rispondere durante la ricerca del messaggio di errore: https://stackoverflow.com/a/29800589

In pratica, basta mettere una "L" di fronte alla vostra stringa di uscita quando si utilizza OutputDebugString:

OutputDebugString(L"test\n");

ha funzionato grande per me.

Edit:

Per formattare le stringhe con i dati, ho finito per usare

char buffer[100]; sprintf_s(buffer, "check it out: %s\n", "I can inject things"); OutputDebugStringA(buffer);

In nessun modo io sono un esperto, ho appena trovato qualcosa che ha funzionato e si è trasferito.

+0

Che non tiene conto se voglio formattare la stringa e passare i dati ad essa. –

+0

Ho aggiunto la mia soluzione che ha funzionato per l'iniezione.Sono specializzato nella piattaforma e nelle lingue iOS, per favore non considerarlo una soluzione esperta :) – Jangles

0

Usa:

OutputDebugStringA("Some random text"); 

Oppure:

OutputDebugString(L"Some random text"); 
Problemi correlati