我在 windows 环境下使用 gdb 调试 vlc.exe 时遇到问题。我按照http://wiki.videolan.org/Win32Compile上的说明,在linux下成功编译打包VLC。
该程序运行良好,我也在项目文件夹中获得了符号表。但是我不能让 gdb 加载必要的符号文件来设置断点和东西。
在 vlc 文件夹下,目标文件列在 like
./win32/*/*/*.o
并且可执行文件存储在
./win32/vlc-2.1.0-git/vlc.exe
Cygwin shell 中的“gdb vlc.exe”加载的有用符号不多。
我尝试了符号表命令来加载特定的符号文件。它加载文件,我可以在中断提示中看到该功能。但是当我运行程序时,我收到了警告:
无法插入断点 1。
访问内存地址 0x2800 时出错:输入/输出错误。
有没有办法为 gdb 提供符号文件,以便我可以像在 linux 环境中一样调试它?
如果有人对我为什么这样做感兴趣,这里有一点背景。
我正在研究 VLC 代码库,了解它对 DXVA2 接口的包装。该项目非常庞大且复杂,其中包含许多试图模仿 C++ 继承和封装的函数指针,这使得它难以理解。
我的目的是单步调试 DXVA2 (Microsoft DirectX Video Acceleration 2) h264 路径上的 VLC 源代码,该路径仅在 windows 平台上运行。AFAIK vlc 没有可用于编译和调试的 IDE 项目文件。我选择交叉编译是因为 VLC 网站建议这样做,我想如果我能得到符号文件、源代码和可执行文件,我就可以调试它。
帮助将不胜感激。提前致谢。