在Windows 7上使用以下代码调用OutputDebugString时,我只会看到“ ????”。在DebugView的打印列中。我认为这可能是与编码有关的问题,但不确定是否有人见过此问题。这是我用来调用OutputDebugString的代码。
void dbgprint(char *format, ...)
{
static DWORD pid=0;
va_list vl;
char dbgbuf1[2048],
dbgbuf2[2048];
// Prepend the process ID to the message
if ( 0 == pid )
{
pid = GetCurrentProcessId();
}
EnterCriticalSection(&gDebugCritSec);
va_start(vl, format);
wvsprintf(dbgbuf1, format, vl);
wsprintf(dbgbuf2, "%lu: %s\r\n", pid, dbgbuf1);
va_end(vl);
OutputDebugString(dbgbuf2);
LeaveCriticalSection(&gDebugCritSec);
}
预先感谢您对此问题的任何见解。
最佳答案
正如您所说,这可能是编码问题。
只需使用以下命令进行测试:
OutputDebugStringA(“这是一个非Unicode测试”);
还有两件事,
您不必在PID前面加上前缀,因为OutputDebugString
将其与消息一起发送。
在https://github.com/djeedjay/DebugViewPP处查看DebugView ++
关于c++ - DebugView打印列显示“????”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28952358/