GDB 调试postgresql

GDB 调试postgresql

查看pid

select pg_backend_pid();

在这里插入图片描述
gdb attach -p 30447 ​​ gdb attach到 postgres 的交互进程 id
这样和终端命令的执行才能阻塞式得执行, 方便我们在gdb端check 执行逻辑。
在这里插入图片描述
调试postgresql,我们先以最简单的SQL文作为例子演示如何调试跟踪代码。例如:select 1;

在这个状态下,可以接受gdb命令,这里,我们使用b命令在ExecResult处打上断点,再回到postgresql的窗口,执行SQL

b ExecResult

我们可以看到因为postgres进程已经暂停,SQL会卡在那里动不了,这也是我们的目的,不然怎么一步一步的调试呢?

我们再回到gdb这边,运行c命令,程序就会继续执行下去,然后再断点处(ExecResult)停止。

layout src 

打开源代码界面
在这里插入图片描述

程序崩溃定位

bt

gdb bt 是在 GDB(GNU Debugger)中用于打印当前调用栈的命令。bt 是 backtrace(回溯)的缩写,表示将当前的调用栈信息打印出来。

在程序运行时出现错误或崩溃时,使用 gdb 可以调试程序并定位问题。在 gdb 中执行 bt 命令可以查看当前代码的调用栈信息,即当前代码执行到了哪里,是被哪些函数调用的。这对于定位问题非常有帮助。

例如,如果在程序中发生了 segmentation fault(段错误)的错误,可以在 GDB 中执行以下步骤:

打开 GDB 并指定要调试的程序,例如 gdb ./myprogram
执行程序,例如 run
当程序崩溃时,会停在 GDB 中,此时可以执行 bt 命令来查看调用栈信息。
bt 命令会输出当前程序的调用栈信息,从调用栈的底部(最后调用的函数)开始,一直到当前执行的位置。每一行都包含函数名、文件名、行号等信息,可以根据这些信息定位问题。
在这里插入图片描述

打印结构体信息

GDB提供了格式化输出显示结构体的选项,set print pretty off, 这个选项的默认是关闭的。打开该选项再次打印结构体set print pretty off
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值