【问题标题】:how can i change the runtime libraries (libc ,ld, etc) used by gdb in cross (ARM) debugging如何更改 gdb 在交叉(ARM)调试中使用的运行时库(libc、ld 等)
【发布时间】:2013-03-08 16:13:18
【问题描述】:

我有一个基于飞思卡尔 iMX6q ARM Cortex A9 处理器的 ARM 开发板。 我还有一个要在板上调试的应用程序。 开发板正在运行一个带有非剥离运行时库的 LTIB 文件系统。 在主机上,我还下载了一个 Linaro 工具链(具体来说是软浮点 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 runtime arm


    【解决方案1】:

    使用 gdb 的 set sysroot DIRECTORY 命令 (GDB Manual)。假设您在设备上有一份文件系统的副本,其调试信息位于/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
    

    【讨论】:

    • 你好。谢谢你的命令。我对其余的命令有点模糊。 set remote exec-filefile。如果我在目标开发板上运行 gdbserver,它们真的需要吗?
    • file 从主可执行文件加载调试信息,没有它start 将无法工作,因为此时没有符号表。 set remote exec-file 告诉 gdbserver 需要运行哪个文件,因为我在多进程模式下启动了 gdbserver。
    • 简而言之,file 始终是必需的。 set remote exec-file 仅在您运行 gdbserver --multi 而不是 gdbserver PROGRAM 时才需要,但我发现前者更易于使用,因为我可以让 gdbserver 运行。
    • 对。我忽略了您在没有参数的情况下调用了 gdb,我不使用 file,因为我总是加载 gdb FILE,这看起来很奇怪。不过现在很清楚了。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2016-05-26
    • 2021-07-10
    • 2023-03-16
    • 1970-01-01
    • 2013-01-05
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    相关资源
    最近更新 更多