gdb 调试动态库遇到 objectdir 错误提示

今天在HP UNIX上面使用gdb调试so动态库遇到个错误,总结了一下,和大家分享下,以后遇到这样的错误,可以参考参考:

ERROR: Use the "objectdir" command to specify the search

path for objectfile test.o.
If NOT specified will behave as a non -g compiled binary.

Breakpoint 2 at 0x9fffffffbf5ff8d1:2 from /tmp/test.so.

解决办法:
1.要把代码和object文件都传到需要调试的机器上面(如果文件比较多,传tar包比较方便)(参考注释1)
2.然后把目录的绝对路径整理出来(参考注释2)
3.进入gdb后
4.执行directory和objectdir命令,这两个分别是代码和.o的绝对路径,目录直接使用冒号:分隔
directory     path1:patch2:patch3...pathn
objectdir     path1:patch2:patch3...pathn

5.设置断点调试



注释1:

cp -R /tmp1/test /tmp/bak
tar -cvf bak.tar ./bak/*
gzip bak.tar
ls /tmp/bak.tar.gz


注释2:

可以到解压的根目录bak下执行find `pwd`  -type d | tr '\n' ':'
就能列出所有的目录了





其他:

如果在p 变量的时候遇到下面的错误:

(gdb) p i
$2 = <value unavailable at address 0x9fffffffbf568860>


解决:

+O2,把makefile里面这个去掉,才能打印变量

或者

CFLAG = -D_REENTRANT +O2 (去掉)
CXXFLAG = -g0
就这两个优化参数,有哪个改哪个就行




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值