我有一个后续的设置。虽然我的工作设置是处理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还是没有提供一个断点。所以现在我开始想:
发布于 2009-04-01 15:04:57
您可以尝试查看模仿完全相同的目录结构是否有效。如果您不确定编译器在可执行文件中的调试信息中注释了什么目录结构,那么始终可以使用dwarfdump (on )查看它。
发布于 2009-04-04 22:16:19
首先,GDB不需要任何源将断点放在函数上;因此,您对实际发生的事情的描述可能是不准确的。首先,我将验证您想要打开的函数实际上在二进制文件中:
nm /path/to/app | grep function_desired其次,要进行源代码级调试,GDB需要GDB理解的格式的调试信息。在Linux上,这通常意味着DWARF或STABS。您的RVDS编译器很可能不会发出这样的调试信息;如果是的话,就不可能进行源代码级的调试。
发布于 2009-04-04 22:26:26
是否已启用调试(-g选项)构建库?如果不这样做,就很难识别线等。
https://stackoverflow.com/questions/705737
复制相似问题