Windows 環境で gdb を使用して vlc.exe をデバッグする際に問題が発生しました。http://wiki.videolan.org/Win32Compileの指示に従い、Linux で VLC を正常にコンパイルおよびパッケージ化しました。
プログラムは正常に実行されており、プロジェクト フォルダーにもシンボル テーブルを取得しました。ただし、ブレークポイントなどを設定するために必要なシンボル ファイルを gdb に読み込ませることができません。
vlc フォルダーの下で、オブジェクト ファイルは次のように一覧表示されます。
./win32/*/*/*.o
実行可能ファイルは次の場所に保存されます
./win32/vlc-2.1.0-git/vlc.exe
Cygwin シェルの「gdb vlc.exe」はあまり有用なシンボルをロードしません。
特定のシンボル ファイルを読み込むために、symbol-table コマンドを試しました。ファイルをロードし、ブレーク プロンプトで関数を確認できます。しかし、プログラムを実行すると、次の警告が表示されました。
ブレークポイント 1 を挿入できません。
メモリ アドレス 0x2800 へのアクセス エラー: 入出力エラー。
Linux環境のようにデバッグできるように、gdbにシンボルファイルをフィードする方法はありますか?
なぜ私がこれを行っているのかに興味がある人のために、ここで少し背景を説明します。
DXVA2 インターフェイスのラップについて VLC コードベースを研究しています。プロジェクトは非常に大きく複雑で、多くの関数ポインタが C++ の継承とカプセル化を模倣しようとしており、理解が困難です。
私の目的は、Windows プラットフォームでのみ実行される DXVA2 (Microsoft DirectX Video Acceleration 2) h264 パス上の VLC ソース コードをステップ実行することです。AFAIK vlc には、コンパイルとデバッグに使用できる IDE プロジェクト ファイルがありません。VLC の Web サイトで提案されているため、クロス コンパイルを選択しました。シンボル ファイル、ソース コード、および実行可能ファイルを取得できれば、デバッグできると考えました。
助けていただければ幸いです。前もって感謝します。