windows平臺下vlc編譯之十二:用GDB調試vlc

請移步https://higoge.github.io/,全部下載資料在那個博客都能找到。謝謝。 git

--------------------------------------------------------------------github



    本着開源的精神,本着能讓你們更好的學習vlc,使用vlc,今天Jeremiah寫一篇重量級的博客,用GDB調試vlc。bootstrap

 

    不少人嘗試過用GDB調試vlc,但都失敗了,主要是官方博客給出的調試方法很差用,只能在winvlc.c文件中調試,不能調試其餘文件。Jeremiah也是通過了好久的研究,終於在身邊一位高手的幫助下,實現了對vlc的調試。在此對身邊這個高手錶示感謝。windows

 

調試前提:
1) 對編譯vlc有所瞭解,最好是編譯成功過。因爲用GDB調試vlc須要從新編譯vlc,因此必須對編譯vlc比較熟悉。本篇以vlc-1.0.5爲例。如不清楚如何編譯vlc的請參考《windows平臺下vlc編譯之十一:vlc-1.0.2的編譯》及Jeremiah本身錄製的編譯vlc視頻。
2) 對GDB有所瞭解,至少應該知道怎麼用。若是不知道,去Google吧,一堆堆的資料。
ide

 

    閒言少敘,進入正題。函數

       

    1. 執行./bootstrap以前,修改vlc-1.0.5的Makefile.am和Makefile.in文件,去掉如下內容:(直接刪除掉)學習

# Rebase all those DLLs to speed up loading (need cygwin rebase)
  if rebase -b 0x42 /dev/null >/dev/null 2>&1; then \
    find $(win32_destdir) -type f -name '*.dll' -print | rebase -b 0x70000000 -T -; \
  fispa

        

    2. 修改myvlc.sh的CC和CXX變量,加入-g。debug

CC="gcc -mno-cygwin -g" CXX="g++ -mno-cygwin -g"3d

 

    3. 執行腳本,修改錯誤,執行make,這些都請參考之前博客。

       

    4. make成功後不要執行make package-win32-base。而是執行如下命令。

make package-win32-base-debug

 

    5. 如今就能夠調試了。

cd vlc-1.0.5
gdb vlc

    顯示以下:

 

    6. 設置斷點。

    給vlc設置斷點其實讓Jeremiah頭暈了很長時間,但最後終於搞定了。先打印下看看。輸入l。

    設置斷點能夠用b function_name的形式,但vlc裏面重名函數太多,因此此方法不太好用。

    採用另外的方式,b fine_name:line_number的形式,vlc裏面重名的文件名是不多的,因此這樣的方法能夠頗有效的設置斷點。一開始設置會提示找不到,輸入y讓其記錄就好了。此處舉例設置avcodec.c的211行,OpenDecoder函數,即調試plugins/libavcodec_plugin.dll的代碼。

 

    7. 執行程序,輸入視頻路徑地址。

run d:/video/01.avi

    會執行到libvlc_new以後停住。

      按c繼續執行後會在avcodec.c的OpenDecoder函數停住。   

    經過這樣的方式就能夠進行調試了,好比用s或n進行單步調試。

 

    祝各位清明節快樂。

相關文章
相關標籤/搜索