gdb源码在linux哪个⽬录,GDB源代码查路径
在gdb程序的时候,有时候会发现源代码⽂件不到,对于那些带调试信息的系统库或者第三⽅库,很多时候当你真正想gdb去追他源代码的时候你会发现gdb根本不到这些源代码路径。这个时候有两种选择:
【1】如果gdb这个时候告诉你不到这个带调试信息库的源⽂件路径,此时给出的路径地址是绝对路径,⽐如
/home/rickyk/qt-4.8./src/corelib/tools/qstring.cpp: 没有那个⽂件或⽬录404页面网站源码
这种提⽰的,你就应该⽤gdb提供的
set substitute-path
这个其实很好理解,就是替换规则,你如果想查看当前的替换规则,你可以
show substitute-path
⽐如此时我们需要qstring.cpp这个⽂件,但由于某种原因,⽬前我们不能在/home/rickyk/qt-4.8.6/src/cor
elib/tools/qstring.cpp中到,但我们确可以在/home/rickyk/qt-everywhere-opensource-src-4.8.6/src/corelib/tools/qstring.cpp中到,我们就
set substitute-path /home/rickyk/qt-4.8. /home/rickyk/qt-everywhere-opensource-src-4.8.
这是什么意思?其实就是让gdb在看到/home/rickyk/qt-4.8.6的时候他会做⾃动替换成/home/rickyk/qt-everywhere-opensource-src.4.8.6,也就是说gdb可以正确知道这个⽂件了。此时我们再show substitute-path可以看到此时的转换规则已经被我们加进去了
(gdb) show substitute-path
List of all source path substitution rules:
`/home/rickyk/qt-4.8.' -> `/home/rickyk/qt-everywhere-opensource-src-4.8.6'.
【2】如果此时的gdb弹出的错误信息不是绝对路径的概念,⽽是相对路径的概念
./a.cpp 没有那个⽂件或⽬录
那么此时你可以⽤gdb的第⼆个源代码路径法宝----directory(dir) dirName来指定,也就是说如果我们此时的a.cpp不在当前⽬录下,⽽是在当前⽬录下的bak⽂件夹下,我们只要
dir bak
这个时候我们的gdb就会把你加进去的dir整个替换到相对路径的前⾯,⾃⼰做拼接,也就是说,现在的./a.cpp变成了./bak/a.cpp。
注意两者的差别,对于绝对路径来说,你需要给出替换规则给他做字符串替换,对于相对路径来说,你需要给他⽬录来让他做拼接,也有点prefix的意思,这⾥的prefix由你给出,但相对路径整体结构由gdb给出,然后完成拼接操作。
PS: 同时你需要在.gdbinit上加上⼀句
set auto-load safe-path /
这样你才能让gdb去正确的在别的⽬录进⾏读取源代码 。(这⾥⾯的原因我⽬前不是很清楚,总之就是我⼀开始使⽤set substitute-path的时候怎么⽤都不成功,加上这句之后才可以,有同学知道的也可以告诉我原因),我看了下auto-load的介绍
set auto-load safe-path[directories]
Set the list of directories (and their subdirectories) trusted for automatic loading and execution of scri
pts. You can also enter a specific trusted file. Each directory can also be a shell wildcard pattern; wildcards do not match directory separator -see FNM_PATHNAME for system function fnmatch (see fnmatch). If you omit directories, ‘auto-load safe-path’ will be reset to its default value as specified during gdb compilation.
The list of directories uses path separator (‘:’ on GNU and Unix systems, ‘;’ on MS-Windows and MS-DOS) to separate directories, similarly to thePATHenvironment variable.
感觉这是在设置⾃动可以读取的script路径,不知道这对于set substitute-pah有什么影响。按照参考链接的说法,设置这个命令应该是让gdb去读取可信赖路径的.gdbinit才对。
Linux下动态库查路径的问题
说到和动态库查路径相关的问题,总体上可以分为两类: 第⼀类: 通过源代码编译程序时出现的不到某个依赖包的问题,⽽如果此时你恰好已经按照它的要求确确实实.千真万确.天地良⼼地把依赖库给装好了, ...
谈谈Linux下动态库查路径的问题 ldconfig LD_LIBRARY_PATH PKG_CONFIG_PATH
谈谈Linux下动态库查路径的问题
学习到了⼀个阶段之后,就需要不断的总结.沉淀.清零,然后才能继续"上路".回想起⾃⼰当年刚接触Linux时,不管是⽤源码包编译程序,还是程序运⾏时出现的和动态库的各种恩恩怨怨,⼼⾥ ...
[转]谈谈Linux下动态库查路径的问题
转:谈谈Linux下动态库查路径的问题
Linux动态库的查路径
前两天写了⼀个动态库,然后试图编译到程序⾥⾯去运⾏,结果发现编译的时候通过gcc的-L参数来指定路径仅仅能让编译通过,运⾏时还是会出问题的. ⽐如下⾯这个例⼦: main.c是主程序,sum.c中间含 ...
C语⾔头⽂件、库⽂件的查路径
在 程序设计中,⽂件包含是很有⽤的.⼀个⼤的程序可以分为多个模块,由多个程序员分别编程.有些公⽤的符号常量或宏定义等可单独组成⼀个⽂件,在其它⽂件的开头⽤包含命令包含该⽂件即可使⽤.这样,可避免在每个 ...
⼗:jinja2模板查路径
jinja2⽤于渲染模板 查路径 1.默认从项⽬根⽬录下的templates下⾯指定的html⽂件 也可以往下新建路径 2.指定⾃定义路径 在Flask 的源码中,指定了默认路径为templates ...
随机推荐
iOS 10 开发适配系列 之 权限Crash问题
升级 iOS 10 之后⽬测坑还是挺多的,记录⼀下吧,看看到时候会不会成为⼀个系列. 直⼊正题吧 今天⽤⼀个项⽬⼩⼩练下⼿,发现调⽤相机,崩了.试试看调⽤相册,⼜特么崩了.然后看到控制台输出了以下信息 ...
WebDataGrid设置某⾏某列的值
jQuery新的事件绑定机制on()
浏览jQuery的deprecated列表,发现live()和die()在⾥⾯了,赶紧看了⼀下,发现从jQuery1.7开始,jQuery引⼊了全新的事件绑定机制,on()和off()两个函数统⼀处理 ...
angularJS $watch $digest $apply
⼀ 简介AngularJS提供了⼀个⾮常酷的特性叫做双向数据绑定(Two-way Data Binding),这个特性⼤⼤简化了我们的代码编写⽅式.数据绑定意味着当View中有任何数据发⽣了变化,那么 ...
[POJ 1410] Intersection(线段与矩形交)
ListView添加图⽚⽂字项
1)listview 控件 结合 imagelist 控件 实现类似效果. 2)添加 imagelist 控件 images 属性,点击后⾯的... 添加相应图⽚. 3)点listview,查看其属性 ...
.Net Core 管道中的ConfigureServices 和Configure
ConfigureServices 就是配置服务器的DI容器 把需要的中间件等⼀些东西添加到DI容器 最后都是添加到IServiceCollection⾥⾯ ⽐如services.AddI ...
SQL注⼊之Sqli-labs系列第⼀关
在开始接触渗透测试开始,最初玩的最多的就是Sql注⼊,注⼊神器阿D.明⼩⼦.穿⼭甲等⼀切⼯具风靡⾄今.当初都是以⽇站为乐趣,从安全法实施后在没有任何授权的情况下,要想练⼿只能本地环境进⾏练⼿,对于sq ...
[Winform]只允许运⾏⼀个exe,如果已运⾏则将窗⼝置前
摘要 接着介绍项⽬中⽤到的⼀些⽅法,在winform中,打好包,有时并不允许运⾏多个客户端,要保证只有⼀个客户端运⾏.如果已经运⾏了,则弹出已运⾏的窗⼝,使其展⽰. ⽅法 判断是否有相同的进程 /// ...
linux中安装typecho的pathinfo配置
最近,我安装typecho,安装完之后发现,只有⾸页能够访问,其他的页⾯报404错误 后来发现时nginx默认情况下不⽀持pathinfo模式,于是我查⼀下资料.终于得到解决. 我的 ...
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论