乐者为王

Do one thing, and do it well.

如何调试Win32程序

方法一:使用OutputDebugString函数

函数的原型如下:

1
void OutputDebugString(LPCTSTR lpOutputString);

该函数会输出信息到系统的DEBUGER,输出结果可以使用工具DebugView观察。因为OutputDebugString的参数是字符串,而我们在实际使用过程中通常希望能像printf一样支持变参。下面的方法实现了这个效果:

1
2
3
4
5
6
7
8
9
10
void DebugString(LPCTSTR lpszFormat, ...)
{
    va_list args;
    TCHAR szText[1024];

    va_start(args, lpszFormat);
    wvsprintf(szText, lpszFormat, args);
    OutputDebugString(szText);
    va_end(args);
}

方法二:输出调试信息到Console上

1
2
3
4
FILE *stream;
AllocConsole();
freopen_s(&stream, "CONOUT$", "w", stdout);
printf("Hello, world!\n");

这里AllocConsole()用来打开Console,而freopen_s则把标准输出和Cosole关联。“CONOUT$”这个很关键。

Comments