前言:
此刻咱们对“ubuntu使用gdb”大致比较关切,同学们都想要剖析一些“ubuntu使用gdb”的相关文章。那么小编在网摘上收集了一些有关“ubuntu使用gdb””的相关内容,希望小伙伴们能喜欢,姐妹们一起来学习一下吧!可以通过objcopy --only-keep-debug/--add-gnu=debuglink.
在添加完debug link之后,你在gdb 的时候会自动 add,这样就建立起了联系
主要是通过build id,你可以通过readelf -WS a.out | grep build查看
有了这个build id, gdb在找符号的时候就会根据这个id(对于.gnu_debug_link,他会根据里面具体的含义去查找,不一定是ID,这个取决于你的设置,可以通过objdump -sj .gnu_debuglink test去查看 stackoverflow.com/questions/28787534/debug-information-file-conventions-for-debian-ubuntu)去对应的/usr/lib/debug去查找这个名字,如果一直就匹配就对上了。匹配的时候是在/usr/lib/debug/.build-id里查找的,开头是两个字母hash,然后里面是剩下hash的文件名本身
即c6/fd....fd4.debug
如果基于build-id的方式找不到,他会找基于gnu debug-link的filename,他首先会找跟你相同的binary的同级目录,如果没有他会找本地的.debug目录,如果还是找不到,他会在debug-file-directory中建立相对本文件的目录树,比如当你现在的文件是/usr/lib/libfoo.so,那么他实际会从/usr/lib/debug/usr/lib/libfoo.so去查找(你可以自己去设置这个debug-file-directory,如果你有多个,需要用":"分隔
注意这三行,代表三个顺序,最后的temp就是当你认为去设置的时候他的prepend
注意,这些选项不会跟着sysroot和solib-search-path走,因此你需要根据这个选项去手动适配对应的debug-file-directory
PS:
这样的话原来的程序就可以进行strip,然后在真正debug的时候可以通过add-symbol-file来添加(相关的offset可以先run,然后info target查看)
标签: #ubuntu使用gdb