linux – 使用gdbserver调试共享库
发布时间:2020-12-14 02:26:00 所属栏目:Linux 来源:网络整理
导读:我在目标和CodeSourcery IDE上使用gdbserver.我的硬件是带有omap3530的gumstix. 我可以在我的主应用程序中单步执行代码,但如果我尝试进入共享库中的函数,我将获得内存地址并终止调试器. 这是我的库,它被编译并复制到目标系统上的/ lib文件夹.(它有调试符号)
我在目标和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 initializersnand 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |