在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/

10-13 08:18