如何使用GDB对Postgres多进程代码进行调试?

一、GDB版本

•GDB(>V7.0)支持多进程调试

二、参数说明

• follow-fork-mode    detach-on-fork    说明

    parent                        on                    只调试主进程(GDB默认)

    child                            on                    只调试子进程

    parent                         off                   同时调试两个进程,gdb跟主进程,子进程block在fork位置

    child                             off                    同时调试两个进程,gdb跟子进程,主进程block在fork位置

三、调试方法

•set    detach-on-fork    off

给子进程的函数加断点

info  inferiors

inferior数字

四、示例:PG中BackGround子进程启动过程

•具体以插件pg_cron中

BackGround: ux_cron_scheduler子进程为例

(一)设置参数


(二)断点跟踪


(三)父子进程切换


(四)创建ux_cron_scheduler子进程


(五)跟踪至PgCronWorkerMain


你可能感兴趣的:(如何使用GDB对Postgres多进程代码进行调试?)