0

当使用以下代码在 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);
}

在此处输入图像描述

提前感谢您对此问题的任何见解。

4

1 回答 1

1

如您所说,这可能是编码问题。只需测试它:

OutputDebugStringA("这是一个非 unicode 测试");

还有两件事,

  1. 您不必为 PID 添加前缀,因为 OutputDebugString 已经将它与消息一起发送。
  2. 在https://github.com/djeedjay/DebugViewPP查看 DebugView++
于 2015-03-15T12:59:39.607 回答