Qt Creator / gdb /远程调试/交叉编译:未使用solib-search-path

时间:2015-08-31 13:19:31

标签: linux gdb qt-creator cross-compiling remote-debugging

我使用Qt Creator 3.2.1和gdb 7.6.2(来自QorIQ SDK 1.8powerpc64-fsl-linux-gdb)来调试交叉编译的应用程序。

在我的ppc64测试机器(Yocto)上运行gdbserver:gdbserver :666 /path/to/myapp

然后我在我的x86_64 dev机器(Debian)上使用Qt Creator连接到gdbserver。我已经指定了Kit(sysroot是/opt/fsl-networking/QorIQ-SDK-V1.8/sysroots/ppc64e6500-fsl-linux),工具链gdb等等......到目前为止这个工作原理。我可以调试任何应用程序。

但是如果我的应用程序动态链接到库并且我想调试这个库(/path/to/libmylib.so),则Qt Creator中的gdb无法进入 mylib 的断点。

我想做什么使用Qt Creator 就像这样

  1. Yocto:启动gdbserver
  2. Debian:运行powerpc64-fsl-linux-gdb /path/to/myapp然后输入
    • set solib-search-path /path/to/mylib/
    • target remote 192.168.120.211:666
    • break MyLibraryFunctionIWantToDebug
    • run
    • c
  3. 日志:

    GNU gdb (GDB) 7.6.2
    Copyright (C) 2013 Free Software Foundation, Inc.
    License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
    This is free software: you are free to change and redistribute it.
    There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
    and "show warranty" for details.
    This GDB was configured as "--host=x86_64-fslsdk-linux --target=powerpc64-fsl-linux".
    For bug reporting instructions, please see:
    <http://www.gnu.org/software/gdb/bugs/>...
    Reading symbols from /path/to/myapp...done.
    (gdb) show solib-search-path
    The search path for loading non-absolute shared library symbol files is .
    (gdb) set solib-search-path /path/to/mylib/
    (gdb) show solib-search-pat
    The search path for loading non-absolute shared library symbol files is /path/to/mylib/.
    (gdb) target remote 192.168.120.211:666
    Remote debugging using 192.168.120.211:666
    (gdb) break MyLibraryFunctionIWantToDebug
    Breakpoint 1 at 0x10001088: file /path/to/myapp/myapp.c, line 196.
    (gdb) run
    The "remote" target does not support "run".  Try "help target" or "continue".
    (gdb) c
    ...
    

    到目前为止的研究:

    • gdb has a bug in version 7.4(我现在正在使用7.6.2)
    • 我可以将set solib-search-path /path/to/mylib/命令放入.gdbinit。在Qt Creator中,每个.gdbinit文件都被忽略。我尝试了多个位置,例如Qt创建者中的~/.gdbinit/path/to/myapp/.gdbinit命令行参数选项:-x ~/.gdbinit,工具&gt;选项&gt;调试器将命令放入每个附加字段。无效: - (
    • 我并不是唯一的问题,请参阅herehere

    在使用共享库时,如何在Qt Creator中使用gdb进行调试?

1 个答案:

答案 0 :(得分:0)

也许它已经改变了QtCreator 3.6(我正在使用的),但是如果我将set solib-search-path命令放在“附加附加命令”恶魔并且只有那个字段,我就让它工作了。

当然,我的情况可能不完全适用于你的情况,因为它不是完整的交叉编译,而是在不同版本的Linux上运行GDB而不是远程目标运行。