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

如何更改gdb在交叉(ARM)调试中使用的运行库(libc、ld等),gdb,runtime,arm,Gdb,Runtime,Arm,我有一个基于飞思卡尔iMX6q ARM Cortex A9处理器的ARM开发板。 我还有一个我想在主板上调试的应用程序。 开发板正在运行一个带有非剥离运行库的LTIB文件系统。 在主机上,我还下载了一个Linaro工具链(具体来说是soft float 2012.04),它只包含剥离库 我想告诉gdb(在主机上运行)使用一组不同的运行时库(非剥离库),与我在主机上保存的LTIB文件系统的映像不同 我该怎么做 让gdb给我 (gdb) show debug-file-directory 它返回一

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

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

我该怎么做

让gdb给我

(gdb) show debug-file-directory
它返回一些在我的主机文件系统上甚至不存在的路径

The directory where separate debug symbols are searched for is 
"/cbuild/slaves/oort14/crosstool-ng/builds/arm-linux-gnueabi-linux/install/lib/debug".
我甚至不确定这是否是要调整的正确变量

更新: 即使设置调试文件目录也无济于事,使用的运行库库仍在工具链路径中:

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.
我能做什么?
感谢您的帮助

使用gdb的
设置系统根目录
命令()。假设您在设备上有一个文件系统副本,其调试信息位于
/LTIB_ROOT

[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

你好。谢谢你的命令。我对其余的命令有点模糊<代码>设置远程执行文件和
文件
。如果我在目标开发板上运行gdbserver,它们真的需要吗?
文件
从主可执行文件加载调试信息,没有它
启动
将无法工作,因为此时将没有符号表
set remote exec file
告诉gdbserver运行哪个文件以及需要哪个文件,因为我是在多进程模式下启动gdbserver的。简而言之,
file
始终是必需的
set remote exec file
仅在运行
gdbserver--multi
而不是
gdbserver程序时才是必需的,但我发现前者更容易使用,因为我可以让gdbserver继续运行。我忽略了您在没有参数的情况下调用gdb,我不使用
文件
,因为我总是加载
gdb文件
,这看起来很奇怪。不过现在已经清楚了。谢谢