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

来源:互联网 发布:影片制作软件 编辑:程序博客网 时间:2024/06/10 06:11

今天在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
原创粉丝点击