通过 GDB 跟踪 PostgreSQL 字符编码
栏目: 数据库 · PostgreSQL · 发布时间: 5年前
内容简介:当 psql 或者其他客户端链接到 PostgreSQL 数据库后,可以使用 gdb 跟踪对应的 postgres 进程,使用几个函数打印输出数据库编码方式、客户端编码方式等信息。第一步,使用 psql 链接到 PostgreSQL 数据库,查看当前数据库的字符编码信息。第二步,使用 gdb attach 对应的 postgres 进程,并打印输出相关的字符编码。
当 psql 或者其他客户端链接到 PostgreSQL 数据库后,可以使用 gdb 跟踪对应的 postgres 进程,使用几个函数打印输出数据库编码方式、客户端编码方式等信息。
第一步,使用 psql 链接到 PostgreSQL 数据库,查看当前数据库的字符编码信息。
postgres=# \l postgres List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ----------+----------+-----------+-------------+-------------+------------------- postgres | postgres | SQL_ASCII | en_US.UTF-8 | en_US.UTF-8 | (1 row)
第二步,使用 gdb attach 对应的 postgres 进程,并打印输出相关的字符编码。
(gdb) bt #0 0x00007f9375b16463 in __epoll_wait_nocancel () from /lib64/libc.so.6 #1 0x00000000006e1c5e in WaitEventSetWait () #2 0x0000000000611bd6 in secure_read () #3 0x000000000061a308 in pq_recvbuf () #4 0x000000000061aed5 in pq_getbyte () #5 0x00000000006ff519 in ReadCommand () #6 0x0000000000701272 in PostgresMain () #7 0x0000000000476fcd in ServerLoop () #8 0x000000000069a01b in PostmasterMain () #9 0x00000000004779e1 in main () (gdb) p (char*) GetDatabaseEncodingName() $1 = 0x98c6e6 "SQL_ASCII" (gdb) p (char*)pg_get_client_encoding_name() $2 = 0x98c719 "UTF8" (gdb) p pending_client_encoding $3 = 6 (gdb) p (char*)GetConfigOptionByName("client_encoding", NULL, true) No symbol "NULL" in current context. (gdb) p (char*)GetConfigOptionByName("client_encoding", 0, true) No symbol "true" in current context. (gdb) p (char*)GetConfigOptionByName("client_encoding", 0, 1) $4 = 0x2267068 "UTF8" (gdb) 注:数据库采用 SQL_ASCII 编码,psql 采用 UTF8 编码
第三步,改变 psql 客户端编码方式为韩文编码。
postgres=# set client_encoding to EUC_KR; SET
第四步,gdb 再次查看编码方式。
(gdb) p (char*) GetDatabaseEncodingName() $1 = 0x98c6e6 "SQL_ASCII" (gdb) p (char*)pg_get_client_encoding_name() $2 = 0x98c6fe "EUC_KR" (gdb) p pending_client_encoding $3 = 6 (gdb) p (char*)GetConfigOptionByName("client_encoding", 0, 1) $4 = 0x2267068 "EUC_KR"
Advertisements
分类:PostgreSQL
Tagged as:gdb, 字符编码
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Firefox 65 计划推出新反跟踪方法,专门针对跨站点跟踪
- Thinkphp漏洞跟踪
- 跟踪 Component 的修改
- 路径跟踪 PathMeasure的简单使用
- 埋点:淘宝 SPM 流量跟踪体系
- 调用链跟踪系统之 Vaper
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
白帽子讲Web安全
吴翰清 / 电子工业出版社 / 2012-3 / 69.00元
《白帽子讲Web安全》内容简介:在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?《白帽子讲Web安全》将带你走进Web安全的世界,让你了解Web安全的方方面面。黑客不再变得神秘,攻击技术原来我也可以会,小网站主自己也能找到正确的安全道路。大公司是怎么做安全的,为什么要选择这样的方案呢?你能在《白帽子讲Web安全》中找到答案。详细的剖析......一起来看看 《白帽子讲Web安全》 这本书的介绍吧!