您的位置:首页 > 职场人生

另类调试方法

2007-09-21 14:35 381 查看
由于需要在没有安装VC的PC上进行调试,所以在没有IDE环境的情况下TRACE宏无法工作,而使用 MessageBox 并不是一个很好的方法。另一种简单的方法是向Console中输出文本。
在你的应用中增加如下代码:
#ifdef _DEBUG
FILE* __fStdOut = NULL;
HANDLE __hStdOut = NULL;
#endif

void startConsoleWin(int width=80, int height=25, char* fname = NULL);
void startConsoleWin(int width, int height, char* fname)
{
//创建一个Console窗口,指明宽度和高度,如果fname不为空则同时将输出写 入一个文件。

#ifdef _DEBUG
AllocConsole();//分配
SetConsoleTitle("Debug Window");
__hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);//指明句柄为标准输出HANDLE
COORD co = {width,height};
SetConsoleScreenBufferSize(__hStdOut, co);//指明缓冲区大小
if(fname)
__fStdOut = fopen(fname, "w");
#endif
}
int wprintf(char *fmt, ...)
{
//类似于printf的函数,向Console写入文本
#ifdef _DEBUG
char s[300];
va_list argptr;
int cnt;
va_start(argptr, fmt);
cnt = vsprintf(s, fmt, argptr);
va_end(argptr);
DWORD cCharsWritten;
if(__hStdOut)// 写Console
WriteConsole(__hStdOut, s, strlen(s), &cCharsWritten, NULL);
if(__fStdOut)
fprintf(__fStdOut, s);
return(cnt);

#else
return 0;

#endif

}

在CWinApp::InitInstance(...)中调用 startConsoleWin(...),然后你可以在需要输出的时候使用wprintf(....) 代替 TRACE 宏。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  职场 休闲 调试方法