gdb阅读PostgreSQL源码
一、编译安装Postgresql源码和gdb
具体安装可以看我前面几篇博客,进入postgre中输入:select pg_backend_pid();
之后再新开一个界面输入:sudo gdb -p 10666
后面的数字就是上一步的端口号。
可以看到这里有一点报错但是神奇的是好像没什么问题。。。就不管了先。
二、使用gdb进行调试
先设置一个断点:b ReadBuffer_common
然后c
一下让程序继续执行。
然后简单的查询一下,例如:select * from COMPANY where id = 1;
你就会发现你的断点被触发了
如果对哪一个参数感兴趣可以使用p命令打印变量值,例如:p smgr
这个的前面是类型后面是地址,这个时候我们可以直接使用星号访问这个地址:p *smgr
如果显示格式看着别扭可以使用:set print pretty on
更改显示格式
三、cscope的使用
首先非常的简单,安装一下cscope:sudo apt-get install cscope
。
然后在你要搜索的文件夹中执行:cscope -Rbq
生成索引文件。
之后就可以用vim打开具体的文件,先添加索引::cs add cscope.out
再具体查找::cs find g ReadBuffer_common