关闭

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

标签: gdbobjectdir动态库so
360人阅读 评论(0) 收藏 举报
分类:

今天在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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:33545次
    • 积分:502
    • 等级:
    • 排名:千里之外
    • 原创:10篇
    • 转载:25篇
    • 译文:0篇
    • 评论:0条
    文章分类