调试代码总结

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

目前还没使用过,但应该会比/* */ 好用点




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值