OpenCV dll 源码调试—附加到进程
来源:互联网 发布:山西软件评测中心 编辑:程序博客网 时间:2024/06/05 18:06
使用CMake可以生成OpenCV源码的解决方案,然后就可以对OpenCV函数进行修改,功能剪切等操作了,对这部分内容感兴趣的可以浏览一下上一篇文章:CMake生成OpenCV解决方案&&编译OpenCV源码
自己修改过的函数实现可能有Bug,或者我们想跟踪查看DLL被别的程序调用时候的运行情况,这个时候就可以用到VS编译器的一个调试功能—“附加到进程”。
例如对于OpenCV的高斯滤波函数GaussianBlur,它的位置在moudles->opencv_imgproc->Src->smooth.cpp里,如果 要查看函数被调用时的实现细节,可以编译OpenCV源码,生成dll动态库,对应的动态库是opencv_imgproc2413d.dll, 把编译生成的这个动态库替换掉原OpenCV目录下的这个dll文件,接下来新建一个调用GaussianBlur函数的工程,命名为GaussianBlurTest:
#include "highgui/highgui.hpp" #include "imgproc/imgproc.hpp"#include <Windows.h>using namespace cv;int main(int argc, char *argv[]){Mat image = imread("Test.jpg");Mat imageGau;Sleep(30000);GaussianBlur(image, imageGau, Size(5, 5), 0.5);imshow("Source Image", image);imshow("Gaussian Image", imageGau);waitKey();return 0;}
在OpenCV源码GaussianBlur函数入口处加一个断点:
对GaussianBlurTest工程直接Ctrl+F5运行,或者编译项目之后运行GaussianBlurTest.exe文件,在exe文件运行起来之后,在OpenCV源码工程中点击调试->附件到进程(或者直接快捷键Ctrl+Alat+P),在弹出的对话框中选中GaussianBlurTest.exe:
这样就会在调用到GaussianBlur函数的时候命中断点,然后就可以单步调试程序了:
使用这种方法可以很方便的检查DLL中函数的问题,不至于在由于DLL中函数的BUG导致崩溃的时候束手无策。
跟踪调试DLL中的函数实现只是附加到进程调试的一部分,微软对调试到进程有如下的说明,贴出来:
为什么调试附加进程?
Visual Studio 调试器可以附加到在 Visual Studio 外运行的进程。 可以使用此附加功能执行以下操作:
- 调试并非在 Visual Studio 中创建的应用程序。
- 同时调试多个进程。 也可以通过在单个解决方案内启动多个项目来调试多个进程。
- 调试正在远程计算机上运行的进程。
- 调试一个 DLL,该 DLL 运行在不易从 Visual Studio 启动的独立进程上。例如,与 Internet 信息服务一起运行的服务或 ISAPI DLL。
- 当一个进程在 Visual Studio 外运行时发生崩溃时,将自动启动调试器。 这就是实时调试。
- OpenCV dll 源码调试—附加到进程
- VS调试-附加到进程
- Visual Studio 利用附加进程调试DLL, WEB 调试DLL
- vc2005 附加到进程.(调试错误)
- windbg 附加到进程.(调试错误)
- VS 附加到进程调试技巧
- vs2008附加到进程无法调试
- VS 附加到进程调试技巧
- 附加到进程调试理解(初步)
- VS2010调试后台服务【附加到进程】
- Windows Service服务 附加到进程调试
- 附加到进程调试DLL时显示“无法命中断点,没有为该文档加载任何符号”
- wince 单元调试 附加到进程调试wince
- 附加进程调试说明
- 附加进程调试
- 附加进程调试
- gdb附加进程调试
- VS2008调试问题,附加到进程----与VS2003的区别
- BZOJ1553: XOR网络
- 正片叠底(Multiply)和滤色(Screen)是两种基本的混合模式
- 06-Oracle入门之order by排序
- 十进制负数转化为二进制
- 网站渗透思路全方面总结
- OpenCV dll 源码调试—附加到进程
- 同时消费队列和发布订阅两类型消息
- Lucene学习笔记
- 堆和栈的区别(转过无数次的文章)
- spring依赖注入 注入值 spring表达式
- ASP注入漏洞全接触
- 问题 F: Problem B
- POJ 1789 Truck History MST(水)
- 寒假03:暗恋(只是标题党)