参考自博客:
Visual Studio 调试小技巧(1)-根据字符串内容添加断点
https://blog.csdn.net/cadcisdhht/article/details/5649681
Visual Studio 调试小技巧(2)-从查看窗口得到更多信息
https://blog.csdn.net/cadcisdhht/article/details/5651488
具体以上面的参考博客为标准,我只是加上了我自己的理解,以及,我自己编程时候关于opencv特征点的使用范围
文章1中说到
Visual Studio中的添加断点功能中支持的字符串函数有:strlen, wcslen, strnlen, wcsnlen, strcmp, wcscmp, _stricmp, _wcsicmp, strncmp, wcsncmp, _strnicmp, _wcsnicmp, strchr, wcschr, strstr, wcsstr.
现在我们进行尝试:
使用方法是:
这里是我们想要打断点的地方,手动打上断电,或者在这一行的时候按下F9
然后右键红色断点
选择条件:
加上条件:
==运算符比较的是两个字符串的地址而不是内容
字符串中断,作者解释了,需要这么用:
当前我最关心的是第二篇文章
显示数组的内容
这个可以用在我们特征点信息的显示
特征点信息虽然用局部变量也能看清楚,但是对于动态分配的就不行了
但是未来我们编程的时候,会遇到,动态分类特征点数组 ,那时候就需要文章2的查看方法了
在监视中输入要看到的数组,然后加上 ,size 即 加上逗号和数组大小
我们测试动态特征点数组:
pia2显示显示的首地址,即数组中第一个元素的信息,但是无法全部显示
如果像全部显示,就用刚刚的方法,使用监视
还有关于opencv错误代码的解析
此时还没有运行读取函数,然后我们点击继续,让断点往下走
这时候程序还没奔溃,但是通过这种方法,已经找到了错误源,此时如果再点继续,程序才会奔溃,
使用这种方法,我们可以很清晰发现,错误的原因是什么
我举得例子比较简单,因为我们平时写代码会像下面这样,
Mat output2;
Mat X1 = imread("没有存在的图片.png", 1);
if(X1.empty())
{
//####操作处理
}
drawKeypoints(X1, keypoints2, output2);
但是这个方法是非常值得学习得
$ERR,hr