postgresql调试之关闭优化器

本文介绍了当使用GCC编译器进行代码优化时,在GDB调试过程中遇到“value optimized out”提示的原因及解决办法。通过调整编译选项,关闭代码优化功能,并重新编译安装程序,可以有效避免此问题的发生,确保调试过程顺利。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 开启优化器选项时的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

   145714_lrrI_2604075.png

转载于:https://my.oschina.net/u/2604075/blog/599114

### PostgreSQL简介 PostgreSQL 是一个功能强大的开源对象-关系数据库系统,以其稳定性、可靠性、数据完整性以及对 SQL 标准的严格遵循而著称[^2]。 #### 主要特点 - **事务支持**:提供完整的 ACID 特性(原子性、一致性、隔离性和持久性),确保数据操作的安全可靠。 - **扩展性强**:除了基本的关系型数据库特性外,还提供了丰富的扩展模块来增强其功能,如 Apache Arrow Flight SQL Adapter for PostgreSQL 扩展用于高效的数据传输[^1]。 - **多版本并发控制 (MVCC)**:允许读写操作并行执行而不互相阻塞,提高了系统的性能和响应速度。 - **高级查询优化器**:能够自动选择最优路径来进行复杂的查询处理,从而提高效率。 - **多种编程接口**:支持 C/C++、Python、Java 等主流开发语言连接访问数据库;同时也内置 PL/pgSQL 这样的过程化语言供存储过程编写使用[^4]。 ### 基本命令与操作 对于初次接触 PostgreSQL 的用户来说,掌握一些基础的操作是非常重要的: - **启动服务** - Linux 上可以通过 `service postgresql start` 或者 `systemctl start postgresql.service` 来开启服务进程。 - **进入交互环境** - 使用默认创建好的超级管理员账户 `postgres` 登录到 psql 终端工具中去管理数据库实例: ```bash sudo -u postgres psql ``` - **查看现有数据库列表** - 输入 `\l` 查看当前服务器上的所有可用数据库名称及其描述信息。 - **退出psql终端** - 键入 `\q` 即可安全地断开连接并返回至操作系统提示符下。 - **设置或关闭查询计时** - 开启查询耗时时长统计功能有助于开发者调试程序逻辑中的瓶颈所在之处。例如输入`\timing` 后再做一次简单算术运算测试效果: ```sql \timing SELECT 3 * 7; ``` - **浏览已加载插件情况** - 若要确认某个特定附加组件是否已经被激活,则可通过查询 system catalog 表 `pg_extension` 获取相关信息: ```sql SELECT * FROM pg_extension; ``` ### 高级应用案例 当涉及到实时通信场景下的消息推送机制实现时,“PostgreSQL + WebSocket”的组合方案不失为一种创新性的解决方案尝试方向之一[^5]。该项目旨在利用两者各自的优势构建起一套稳定高效的双向通讯框架结构模型,适用于现代Web应用程序架构设计当中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值