首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载符号文件,用于调试windows环境下交叉编译的VLC (Linux中为mingw)工程(Cygwin)

加载符号文件,用于调试windows环境下交叉编译的VLC (Linux中为mingw)工程(Cygwin)
EN

Stack Overflow用户
提问于 2012-04-04 06:30:38
回答 1查看 1.4K关注 0票数 2

我在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“加载的符号不多。

我尝试了symbol-table命令来加载特定的符号文件。它加载文件,我可以在break提示符中看到该函数。但是当我运行这个程序时,我得到了警告:

无法插入断点% 1。

访问内存地址0x2800时出错:输入/输出错误。

有没有办法把符号文件提供给gdb,这样我就可以像在linux环境中那样调试它?

如果有人对我为什么要这样做感兴趣,这里有一些背景知识。

我正在研究VLC代码库,了解它在DXVA2接口上的包装。这个项目相当庞大和复杂,有许多函数指针试图模仿C++继承和封装,这使得它很难理解。

我的目的是逐步通过DXVA2 (微软DirectX视频加速2) h264路径上的VLC源代码,该路径只能在windows平台上运行。AFAIK vlc没有可以用来编译和调试的IDE项目文件。我选择交叉编译是因为VLC网站推荐它,我想如果我能得到符号文件,源代码和可执行文件,我就可以调试它。

我们将非常感谢您的帮助。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-04-06 08:19:12

我找到了解决方案。

gdb需要知道在哪里加载符号文件,这可以通过使用path函数或在path中添加符号文件位置来完成。

gdb还需要知道加载源文件的位置,这可以通过目录函数或指定程序何时启动来完成。

这就是我要做的:

在我的.bashrc文件中添加以下内容:

代码语言:javascript
复制
PATH=$PATH:[vlc proj folder]

export PATH

然后启动gdb,如下所示:

代码语言:javascript
复制
gdb `find [vlc proj folder] -type d -printf '-d %p '` vlc.exe

:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10002398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档