除錯opencv程式,怎麼在vs執行下直接調到opencv的原始碼
好久不更博了,今天來點實際的大雷子
關於在vs中檢視opencv的原始碼,一直是我想實現的,
可是看網上搜怎麼看opencv原始碼,就僅僅一個版本 ,cmake編譯原始碼,然後開啟opencv.sln,搜尋你要看的函式名稱,,或者不開啟open.sln,僅僅開啟某個功能的.sln,,在modules資料夾下任意模組的中的sln,也可以,這個會快點嘛,,可是可是可是
一般想看原始碼的情況 大部分都是在自己的opencv程式,debug除錯當中,f12進入函式定義,直接想跳入opencv的原始碼,這才叫真正的看原始碼吧,
今天在overflow搜了好多,加上自己的嘗試,ok了,
1,cmake編譯opencv原始碼,然後開啟oepncv.sln,debug,release下都build一遍,這是會出現bin檔案,lib檔案,以及install檔案:
而install檔案你會發現和一鍵安裝opencv時生成的檔案一樣, 有lib include bin;
我之前配置檔案時時選擇install內的lib bin路徑, 但是今天看完國外的一些建議後,說 pdb檔案是很重要的,它是除錯符號檔案,包含了原始碼的路徑細節,所以我又重新配置的opencv的各個路徑,但是bin下的符號檔案怎麼新增到vs中呢,,在 工具-》選項-》除錯下,常規欄目中 勾選 啟用原伺服器支援,它下面的也勾選,,然後除錯下面的 符號 勾選Microsoft符號伺服器。
以上是按stack overflow上的做法,但是程式你生成ok後,debug執行,這是你要看輸出視窗,依然還是顯示
已載入“D:\\opencv_imgproc249d.dll”。已載入符號。無法查詢或開啟 PDB 檔案。
。。
system2的pbd顯示ok, opencv的找不到,,,所以在你單步執行時,遇到opencv自帶的函式,F11進入,你仍然進入的是.h標頭檔案,而不是相應的cpp
分割線
ok,下面的方向就是徹底能看到除錯時原始碼了,
2、既然vs還是提示看不到opencv的pdb檔案,那還是在工具-》選項-》除錯-》符號,沒有正確配置,
首先我嘗試的是在Microsoft符號伺服器下右上角有個新增,我輸入opencv_calib3d249d.pdb,然後執行,看輸出視窗還是提示說 無法查詢或開啟 PDB 檔案,,又發現右上角是資料夾的新建,ok,我把debug的pdb路徑輸入,D:\opencv2492\opencv\build20170706gai\bin\Debug,,在執行程式加斷點,完美,輸出視窗
。。
已載入“D:\opencv2492\opencv\build20170706gai\install\bin\opencv_imgproc249d.dll”。已載入符號。
。。
在opencv自帶函式處加斷點,F11,哇,cvLoadImage(), 調到opencv的src檔案內的d:\opencv249\opencv\sources\modules\highgui\src\loadsave.cpp,,可以看到oepncv自帶函式的實現了,點雲庫PCL想看原始碼,也一樣
但有個不太好,之前常用F12進入函式定義,程式執行不執行都可以調到cpp定義,在這是不行的,必須程式是在執行狀態下,debug下,F11單步執行才可以進入opencv原始碼的cpp
補充:
1,cmake release也生成了pdb檔案,那release下也可以應該看到原始碼的
2,把opencv原始碼路徑也要加上,忘說了,在配置屬性 -》vc++目錄-》源目錄,D:\opencv2492\opencv\sources\modules
3、除錯看原始碼應該不止這一種方式,看overflow,,靜態lib??,,待嘗試
原文地址:http://blog.csdn.net/zkl99999/article/details/77863735