1. 简述
本例是使用gdb对postgres中insert语句的源码进行调试,查看PortStart函数中将的portal值为例进行讲解。
2. 调试环境
软件版本:gcc -v(6.1.0 (GCC) )、gdb(GNU gdb (GDB) 7.8.2)、postgres(9.6.2)
调试窗口:打开两个窗口,psql窗口用来做insert输入,gdb窗口调试PortalStart函数
3. 打开psql窗口
以postgres用户输入psql进入postgres客户端;
# 构建测试测试数据库和表
create database testdb;
\c testdb;
CREATE TABLE test (
id int NULL ,
name varchar(200) NULL ,
age int NULL
);
# 插入语句
insert into test(id,name,age) values('1','aaa','23');
# psql端截图
4. 以tui模式进入gdb
# 在进程列表中选出本地的postgres客户端(psql)
gdb postgres -tui `ps -ef|grep '\[local\] idle' | awk '{print $2}'`
5.进行调试
# 设置断点
b PortalStart
# 触发断点(psql insert)
# continue
# 查看变量信息