openGauss内核分析(二.二):简单查询的执行

gdb调试

调试需要用到符号信息,configure使用如下命令

./configure --gcc-version=7.3.0 CC=g++ CFLAGS='-O0' --prefix=$GAUSSHOME --3rd=$BINARYLIBS --enable-debug --enable-cassert --enable-thread-safety --with-readline --without-zlib

gdb attach 进程号,这里进程号为17012

gdb attach 17012

info threads查看所有线程,t 线程号切换线程,bt可以查看线程调用栈。

openGauss内核分析(二.二):简单查询的执行_linux工具

也可以使用linux工具gstack 打印函数调用栈。

openGauss内核分析(二.二):简单查询的执行_g++_02

以调试select语句为例,gdb attach 进程号,在exec_simple_query打上断点,执行select语句即可开始调试

openGauss内核分析(二.二):简单查询的执行_调用栈_03

openGauss内核分析(二.二):简单查询的执行_g++_04

openGauss内核分析(二.二):简单查询的执行_调用栈_05