Jugier's Blog

天可补,海可填,南山可移。
日月既往,不可复追。

  可能性最大的在当前调用函数的文件中未引入头文件,导致截断(有的系统默认指针是 4 个
字节,64 位系统指针是 8 个字节,但是在函数未定义的情况下,系统默认回传 4 个字节的指针,
就会导致指针高 4 位未被回传,系统就会默认会将高 4 位填充成 FFFF,导致指针地址出错),
出现的段错误。

一、 缓冲区管理器的结构

PostgreSQL缓冲区管理器由三层组成,即缓冲表层缓冲区描述符层缓冲池层

阅读全文 »

1、gdb ./bin/initdb
2、set args -D ./data
3、在initdb.c 中打断点,最好位置设置在initialize_data_directory函数的setup_auth(cmdfd);
4、运行程序 r (run)
5、启动新窗口,查找进程,ps -ux
找到postgres --single -F -O -j -c search_path=pg_catalog -c exit_on_error=true template1
6、在新启动的窗口调试进程 (gdb att procid)

一、事务标识

当事务开始时,事务管理器会为其分配一个事务标识(txid)的唯一标识符。

PostgreSQL有三个特殊txid:

  • 0标识无效的txid;
  • 1表示初始启动的txid,仅用于数据库集群的初始化过程;
  • 2表示冻结的txid。
阅读全文 »

一、xlog存储结构

​ 每个XLOG文件有一个ID,一个逻辑上的xlog文件物理上被分割成一个个固定大小的段(默认16MB)。xlog文件号和段号可以唯一确定某个段文件。确定日志文件内的一个日志记录的地址时,只需要xlog文件号和日志记录在该文件内的偏移量即可。

阅读全文 »

修改当前用户下~/.bashrc

1
export PS1="\[\e[33;1m\]┌───\[\e[34;1m\][\[\e[31;1m\]\u\[\e[34;1m\]]-\[\e[34;1m\][\[\e[32;1m\]\w\[\e[34;1m\]]\[\e[33;1m\]  \t\n\[\e[33;1m\]└────☞\$ \[\e[m\]"
阅读全文 »

  • 如果链表为空时,代码是否能正常工作?
  • 如果链表只包含一个结点时,代码是否能正常工作?
  • 如果链表只包含两个结点时,代码是否能正常工作?
  • 代码逻辑在处理头结点和尾结点的时候,是否能正常工作?


1
2
3
4
5
#psql查看当前窗口进程:select  pg_backend_pid();

#gdb关联进程:gdb attach 进程号

#gdb查看堆栈信息:bt
阅读全文 »
0%