调试 openGauss server main 函数方法 假设单机server启动命令为: ```bash [yz@test openGauss]$ gs_ctl start -D /opt/openGauss/gauss_data -l logfile ``` # 单机启动过程 - gs\_ctl 通过fork()方法启动一个子进程,然后自己退出; - gs\_ctl 的子进程通过 execl("/bin/sh", "/bin/sh", "-c", cmd, (char*)NULL); 替代当前进程,以启动gassdb进程。 # gs_ctl 使用 gdb 调试运行gs_ctl: ```bash [yz@test openGauss]$ gdb --args gs_ctl start -D /opt/openGauss/gauss_data -l logfile …… (gdb) b start_postmaster Breakpoint 1 at 0x4081ac: file pg_ctl.cpp, line 711. (gdb) r Starting program: /opt/openGauss/openGauss-server/dest/bin/gs_ctl stop -D /opt/openGauss/gauss_data -l logfile …… (gdb) ``` # gaussdb 调试运行gaussdb: ```bash [yz@test openGauss]$ export GAUSSHOME=/opt/openGauss/openGauss-server/dest/ [yz@test openGauss]$ gdb --args /opt/openGauss/openGauss-server/dest/bin/gaussdb -D /opt/openGauss/gauss_data …… (gdb) b main Breakpoint 1 at 0x165ab1a: file main.cpp, line 79. (gdb) r ``` 注: /opt/openGauss/openGauss-server/dest/ 是openGauss编译后的程序目录。