首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改gdb在交叉(ARM)调试中使用的运行时库(libc、ld等)

如何更改gdb在交叉(ARM)调试中使用的运行时库(libc、ld等)
EN

Stack Overflow用户
提问于 2013-03-09 00:13:19
回答 1查看 2.3K关注 0票数 0

我有一个基于飞思卡尔的iMX6q ARM Cortex A9处理器的ARM开发板。我还有一个要在电路板上调试的应用程序。开发板正在运行LTIB文件系统,其中包含未剥离的运行时库。在主机上,我也下载了一个Linaro工具链(具体来说是soft float 2012.04 ),它只有剥离的库。

我想告诉gdb (在主机上运行)使用一组不同的运行时库(未剥离的运行时库),而不是保存在主机上的LTIB文件系统的映像。

我该怎么做?

请求gdb给我

代码语言:javascript
复制
(gdb) show debug-file-directory

它会返回一些在我的主机文件系统上根本不存在的路径……

代码语言:javascript
复制
The directory where separate debug symbols are searched for is 
"/cbuild/slaves/oort14/crosstool-ng/builds/arm-linux-gnueabi-linux/install/lib/debug".

我甚至不确定这是不是可以调整的正确变量。

更新:即使设置debug-file-directory也无济于事,使用的运行时库仍然在工具链路径中:

代码语言:javascript
复制
Reading symbols from /mnt/nfs_host/Linaro/gcc-linaro-arm-linux-gnueabi-2012.04-20120426_linux/arm-linux-gnueabi/libc/lib/ld-linux.so.3...(no debugging symbols found)...done.

我能做些什么?谢谢你的帮助

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-09 03:34:45

使用gdb的set sysroot DIRECTORY命令(GDB Manual)。假设您在设备上有一个文件系统的拷贝,其中包含/LTIB_ROOT上的调试信息

代码语言:javascript
复制
[device]$ gdbserver --multi :2345
$ arm-linux-gnueabihf-gdb # GDB from Linaro toolchain
(gdb) set sysroot /LTIB_ROOT
(gdb) target extended-remote DEVICE-IP:2345
(gdb) set remote exec-file /bin/true
(gdb) file /LTIB_ROOT/bin/true
(gdb) start
Temporary breakpoint 1 at 0x842c: file XXX.c, line YYY.
(gdb) info sharedlibrary 
From        To          Syms Read   Shared Object Library
0x400007a0  0x4001cf80  Yes         /LTIB_ROOT/lib/ld-linux.so.3
0x40037ea0  0x4004948c  Yes         /LTIB_ROOT/lib/libgcc_s.so.1
0x40068760  0x40172b14  Yes         /LTIB_ROOT/lib/libc.so.6
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15298377

复制
相关文章

相似问题

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