首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对库进行源代码级调试?

如何对库进行源代码级调试?
EN

Stack Overflow用户
提问于 2009-04-01 14:19:27
回答 4查看 2.2K关注 0票数 2

我有一个后续的设置。虽然我的工作设置是处理Windows主机上的ARM编译器Real Suite (RVDS) 3.2,但这种情况对于任何主机上的任何其他C编译器都是通用的。

我在Windows上使用RVDS3.2编译器工具链构建了一个C代码的ARM库(静态库- .a文件)。然后,我使用Linux主机上的ARM-Linux编译器工具链将这个库与应用程序链接起来,以获得ARM可执行文件。现在,当我尝试使用gdb在Linux上调试这个生成的ARM可执行文件时,通过尝试在链接库中的某个函数中放置一个断点,gdb无法将断点引用到没有找到的源中。因此,我手动复制了用于在Linux文件夹中创建库的所有源文件(*.c),其中存在可执行文件。尽管如此,gdb还是没有提供一个断点。所以现在我开始想:

  1. 如何在
  2. 上使用不同的编译器链对这个库进行源代码级调试,方法是启动可执行文件,该可执行文件是通过将该库链接到gdb中的应用程序生成的。有可能吗?我该怎么做呢?在RVDS编译器工具链中是否有任何编译器选项来启用此库源代码级的调试?
  3. ,我是否需要将源文件复制到linux中,与这些源文件在windows中存在的文件夹结构完全相同?
EN

回答 4

Stack Overflow用户

发布于 2009-04-01 15:04:57

您可以尝试查看模仿完全相同的目录结构是否有效。如果您不确定编译器在可执行文件中的调试信息中注释了什么目录结构,那么始终可以使用dwarfdump (on )查看它。

票数 1
EN

Stack Overflow用户

发布于 2009-04-04 22:16:19

首先,GDB不需要任何源将断点放在函数上;因此,您对实际发生的事情的描述可能是不准确的。首先,我将验证您想要打开的函数实际上在二进制文件中:

代码语言:javascript
复制
  nm /path/to/app | grep function_desired

其次,要进行源代码级调试,GDB需要GDB理解的格式的调试信息。在Linux上,这通常意味着DWARFSTABS。您的RVDS编译器很可能不会发出这样的调试信息;如果是的话,就不可能进行源代码级的调试。

票数 1
EN

Stack Overflow用户

发布于 2009-04-04 22:26:26

是否已启用调试(-g选项)构建库?如果不这样做,就很难识别线等。

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

https://stackoverflow.com/questions/705737

复制
相关文章

相似问题

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