Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 使用gdbserver调试共享库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我在目标和Codesourcery IDE上使用gdbserver.我的硬件是带有omap3530的gumstix. 我可以在我的主应用程序中单步执行代码,但如果我尝试进入共享库中的函数,我将获得内存地址并终止调试器. 这是我的库,它被编译并复制到目标系统上的/ lib文件夹.(它有调试符号)我试图使用.gbdinit文件来设置solib-absolute-prefix / lib 以下是gdb跟
我在目标和Codesourcery IDE上使用gdbserver.我的硬件是带有omap3530的gumstix.

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

这是我的库,它被编译并复制到目标系统上的/ 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调试共享库全部内容,希望文章能够帮你解决linux – 使用gdbserver调试共享库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。