0、Debug是专门用来调试的,所以能够查到所有局部变量和全局变量的准确的值,但也因此速度非常慢。
而在Release版本下面则速度非常快,但几乎所有的指都不是准确的值。
1、Release下运行正常,Debug下会异常,且通常断点在如图1所示的断点处
图1 异常断点
则一般都是出现了数组越界。
2、采用命令行输入参数的时候,有一些需要注意的地方。
一般vs2010新建win32程序的时候,给出的main函数如下:
int _tmain(int argc, _TCHAR* argv[])
若在cmd窗口输入以下命令:
test.exe D:\test csdn D:\result csdn
A、argc 这个参数是用来判断命令行输入参数的个数,由于argv是根据空格来判断输入的参数,则以上命令会被认为输入了5个参数,如果文件夹目录或者文件名带有空格,则应该输入以下命令:
test.exe "D:\test csdn" "D:\result csdn"
用双引号,则会被当作一个整体,当然,不要在双引号前面输入“\”,否则会被转义
B、argv是获取输入的命令的,在我的测试当中,如果main函数的开头是“_tmain”,则
printf("your function is %s", argv[0]);
则只会输出
your function is t
也就是只获取了参数的第一个字母。但如果换成了"main",则会输出参数的全部,暂时不知道原因。
3、 需要在一些地方,尤其是文件读写的地方加入检查机制,如:
filename = "test.png";
img = imread(filename);
if(img.empty())
{
fprintf(stderr, "ERROR: Could not read image %s\n", filename.c_str());
return -1;
}
4、感觉应该多使用条件编译指令调试代码
#if TEST
#endif
目前还没使用过,但应该会比/* */ 好用点