gpt4 book ai didi

linux - 使用 gdbserver 调试共享库

转载 作者:IT王子 更新时间:2023-10-29 00:53:54 25 4
gpt4 key购买 nike

我在目标和 CodeSourcery IDE 上使用 gdbserver。我的硬件是带有 omap3530 的口香糖。

我可以单步执行主应用程序中的代码,但如果我尝试单步执行共享库中的函数,我将获得内存地址并且调试器会终止。

这是我的库,它被编译并复制到目标系统上的/lib 文件夹。(它确实有调试符号)我试图使用 .gbdinit 文件来设置 solib-absolute-prefix/lib

以下是来自 gdb 跟踪的警告:

903,056 13-gdb-set sysroot-on-target /lib
903,065 13^done
903,065 (gdb)
903,065 14-target-select remote 192.168.1.101:2345
903,114 =thread-group-started,id="i1",pid="42000"
903,114 =thread-created,id="1",group-id="i1"
903,115 15-list-thread-groups --available
903,120 16-list-thread-groups
903,128 &"warning: Unable to find dynamic linker breakpoint function.\nGDB will be unable to debug shared library initializers\nand track explicitly loaded dynamic code."
903,128 &"\n"

导致

903,395 &"Error while mapping shared library sections:\n"
903,397 &"/lib/libCoreLib.so: Invalid argument.\n"
903,399 =library-loaded,id="/lib/libCoreLib.so",target-name="/lib/libCoreLib.so",hostname="/lib/libCoreLib.so",low-address="0x0",high-address="0x0",symbols-loaded="0",thread-group="i1"

最佳答案

您可以使用安装在主机上的库进行调试,前提是调试机器也是开发机器。在这种情况下,您可以使用 set sysroot 而不是 set sysroot-on-target。例如:

set sysroot /home/username/.../rootfs/

其中 /home/username/.../rootfs/ 包含您的目标文件系统的副本

我认为您还应该指定 / 而不是 /lib

关于linux - 使用 gdbserver 调试共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com