另类调试方法
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 宏。
在你的应用中增加如下代码:
#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 宏。
相关文章推荐
- 一中另类调试javascrīpt的好方法
- 一中另类调试javascrīpt的方法
- 另类调试方法
- Oracle package 的另类调试方法
- 调试DLL的另类方法
- 一种另类的so库调试方法
- VC++ 6.0中调试后控制台窗口无法关闭的解决方法
- IIS7.5中调试.Net 4.0网站出现无厘头、500错误的解决方法
- Unix调试工具dbx使用方法
- VC调试方法大全
- Bochs调试方法
- wince 单步调试方法
- 控制面板程序(CPL)调试方法
- Android 无usb数据线调试方法,ADB无线连接 调试
- linux程序无源码调试的方法
- 学习C#的最好方法---斯玛特会员教程[另类思维](入门级)
- 连接真机失败解决方案,以及无线调试方法
- DirectShow Filter调试方法
- javascript断点调试方法
- eclipse调试开源代码方法