关于调试时输出的字符串信息
2010-07-11 20:44:33 来源:WEB开发网核心提示:使用工具:VC6.0,IDA当我们要在程序中输出调试信息时,关于调试时输出的字符串信息,常常以字符串的形式来输出,例如:printf("Some debug information here!");这段代码在Debug和Release版下都输出调试信息,,虽然在Release版下运行程序没有输出调试
使用工具:VC6.0,IDA
当我们要在程序中输出调试信息时,常常以字符串的形式来输出,例如:
printf("Some debug information here!
");
这段代码在Debug和Release版下都输出调试信息,这不是我们所要的,一般地大家都会添加预编译指令,如下所示:
#if _DEBUG
printf("Some debug information here!
");
#endif
这样就达到了在Debug版里程序输出调试信息,在Release版下不输出调试信息的目的。(在Release版里连printf函数都没有调用)可如果要在程序里的许多地方输出调试信息,若采用上面的方式会很麻烦;
(至于为什么麻烦,可能就是不愿多敲几次键盘吧,呵呵。。。)
于是大家都想到写个输出函数,代码如下:
void printInfo(char *strInfo)
{
#if _DEBUG
printf(strInfo);
#endif
}
注:该函数只是演示用的,很简单,没有其他检查字符串功能。
在要输出调试信息的地方,调用如下语句就行:
printInfo("Some debug information here!
");
确实,在Debug模式下运行该程序,则输出如下信息:
Some debug information here!
在Release模式下,则没输出什么信息;
我们往往在这个时候认为一切都OK了;如果你认为是,就没必要往下看了;呵呵。。。
虽然在Release版下运行程序没有输出调试信息来,可这些调试信息却留在了二进制的可执行文件里;
我们可以用IDA来打开该Release版的可执行文件,看到如图一所示的信息:
更多精彩
赞助商链接