Hi team, Now I am start to analyse the process of the postgres, using the gdb. As you can see, at the beginnning of my work, I use the ps to find the postgres's process.
[postgres@fedora postgresql]$ ps -ef | grep postgres postgres 67468 1599 0 08:11 ? 00:00:01 /home/postgres/pgsql/lib/bin/postgres -D /home/postgres/pgsql/data postgres 67471 67468 0 08:11 ? 00:00:00 postgres: checkpointer postgres 67472 67468 0 08:11 ? 00:00:00 postgres: background writer postgres 67474 67468 0 08:11 ? 00:00:00 postgres: walwriter postgres 67475 67468 0 08:11 ? 00:00:00 postgres: autovacuum launcher postgres 67476 67468 0 08:11 ? 00:00:00 postgres: logical replication launcher root 90486 90459 0 14:32 pts/0 00:00:00 su postgres postgres 90494 90486 0 14:32 pts/0 00:00:00 bash postgres 90526 90494 0 14:32 pts/0 00:00:00 psql postgres 90527 67468 0 14:32 ? 00:00:00 postgres: postgres postgres [local] idle root 90680 90652 0 14:33 pts/2 00:00:00 su postgres postgres 90683 90680 0 14:33 pts/2 00:00:00 bash postgres 90766 90683 0 14:33 pts/2 00:00:00 ps -ef postgres 90767 90683 0 14:33 pts/2 00:00:00 grep --color=auto postgres After that, I use the gdp to debug one of the postgres's process [postgres@fedora postgresql]$ gdb -p 67468 WaitEventSetWait (set=0x25221d8, timeout=60000, occurred_events=0x7ffe2ea9df70, nevents=64, wait_event_info=0) at latch.c:1478 1478 in latch.c (gdb) next 1480 in latch.c (gdb) next 1481 in latch.c (gdb) next 1484 in latch.c (gdb) next 1487 in latch.c (gdb) next 1490 in latch.c (gdb) next 1492 in latch.c (gdb) next 1493 in latch.c (gdb) next 1494 in latch.c (gdb) next 1495 in latch.c (gdb) next With the gdb's work, I use the psql to send the query to the postgres. One thing confuses me is, I really don't know how to trace the postgres's process, I try to trace the background writer, the walwriter but I still don't know what is them work logical. I think they seem to work in a loop(I read the related code, that's true), but what I want to verify is to identify all the functions and objects involved in the entire process of PGSQL (from syntax parsing to rewriting, from rewriting to optimization, and from optimization to execution). Can someone give me some advice? Thanks in advance! Yours, Wen Yi