postgresql调试之关闭优化器
2016-01-07 00:00
190 查看
摘要: 编译的时候,gcc默认开启优化器选项,这样会导致gdb的时候代码乱跳,参数也无法print。所以如果是需要调试代码,那么关闭优化器选项;如果需要运用到生产中去,那么开启优化器选项。
开启优化器选项时的gdb状态
gdb调试,需要打印出某个值时,出现“value optimized out”,这是是由于gcc默认开启了优化器所致。
2. 关闭优化器后的gdb状态
编辑src/Makefile.global文件,删除-O2选项
重行编译安装、重启服务
attach postgres进程
设置断点
在psql端执行SQL语句
打印query
开启优化器选项时的gdb状态
gdb调试,需要打印出某个值时,出现“value optimized out”,这是是由于gcc默认开启了优化器所致。
(gdb) p found $1 = <value optimized out>
2. 关闭优化器后的gdb状态
编辑src/Makefile.global文件,删除-O2选项
CFLAGS = -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute -Wformat-security -fno-strict-aliasing -fwrapv -fexcess-precision=standard -g
重行编译安装、重启服务
sudo make install pg_ctl stop -D /pgdata pg_ctl start -D /pgdata
attach postgres进程
[minmin@localhost ~]$ gdb attach 81968
设置断点
(gdb) b pg_analyze_and_rewrite Breakpoint 1 at 0x78755f: file postgres.c, line 666.
在psql端执行SQL语句
postgres=# select * from t1;
打印query
(gdb) p *query
相关文章推荐
- Linux 自检和 SystemTap
- Python 七步捉虫法
- PostgreSQL新手入门教程
- C#中尾递归的使用、优化及编译器优化
- PostgreSQL教程(十):性能提升技巧
- PostgreSQL教程(二):模式Schema详解
- PostgreSQL教程(十三):数据库管理详解
- 深入解读PostgreSQL中的序列及其相关函数的用法
- PostgreSQL教程(八):索引详解
- PostgreSQL教程(三):表的继承和分区表详解
- 简单介绍Ruby on Rails对PostgreSQL数组类型的支持
- PostgreSQL教程(十九):SQL语言函数
- PostgreSQL教程(四):数据类型详解
- PostgreSql新手必学入门命令小结
- 用一整天的时间安装postgreSQL NTFS权限
- FREEBSD安装POSTGRESQL笔记
- PostgreSQL8.3.3安装方法第1/2页
- 深入理解PostgreSQL的MVCC并发处理方式
- PostgreSQL教程(一):数据表详解