VC Access violation調試過程記錄

來源:互聯網
上載者:User

這幾天在調一個網路攝影機的程式,把網路攝影機的映像資料讀回來,然後用H263壓縮(參考codeproject的VideoNet)。

後來程式一直出現一個Access violation(AV)的錯誤,折騰了我整整2天,終於搞出來了。

後來調試過程中發現是下面這句的問題

//Convert the data from rgb format to YUV format<br /> ConvertRGB2YUV(IMAGE_WIDTH,IMAGE_HEIGHT,data,yuv);

data為網路攝影機返回的RGB資料,yuv為轉換成的yuv資料,開始一直在找yuv和輸出資料的問題,沒有發現什麼原因,使用了各種調試工具,待會會列舉一下調試記憶體問題的工具,最後終於發現時資料來源就有問題,data的資料有問題,於是開始看網路攝影機返回的資料,發現網路攝影機返回資料的個數為50688個byte,解析度是176*144,本來應該是176*144*3=76032byte資料,少了很多,於是換了個網路攝影機,還是這麼多,再在同學wl的筆記本上的網路攝影機試了一下,結果正常,後來想出了個原因,網路攝影機因為是山寨貨--睿視,所以可能別人做手腳了,比如,本來只有800w,說成是1000w,而且在軟體上做手腳後,你在電腦上就是1000w。想起了以前一個同學tfand的老師買的優盤,插上電腦提示4G,但是存東西只能存2G,在電腦上明明顯示4G,但後面的2G卻用不了,呵呵,廠商在軟體上做了手腳,讓你看著是4G。wl的筆記本因為是Thinkpad,所以,網路攝影機不可能有假,目前還沒有羅技什麼的品牌網路攝影機,所以還不能驗證這一點,不過應該就是這個問題。

 

*******************************************

下面說一下可以調試記憶體錯誤的工具:

1.pageheap,這個工具在微軟網站可以下載到http://www.microsoft.com/downloads/details.aspx?FamilyID=69E7FB1B-1FBE-4E86-B905-74B5473499B3&amp;displaylang=en&displaylang=en,使用說明也可以網上搜到,這個可以在output window中顯示出錯的Heap的資訊。應該是只能顯示new,malloc相關的資訊,因為我後來的那個AV問題的RGB資料是定義的一個數組,所以,這個工具就沒有顯示任何資訊。

2.gflag,這個工具也是微軟的,不過後來一直沒有用。

3.boudschecker,這個工具很強大,是Compuware公司(做DriverStudio的那個)的,在網上可以下載到,使用說明也可以搜到,http://hi.baidu.com/anglecloudy/blog/item/93d70a11f12b1a17b8127b7a.html這個工具可以嵌入到VC中,即時的給出出錯資訊和定位,很好很強大。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.