Thread: debugging libpq backend code
Hello All, I'm trying to debug libpq backend code (files: auth.c, auth-sasl.c in directory src/backend/libpq). I followed: Developer FAQ - PostgreSQL wiki and attached postgres process ( because connection is still in progress and I don't see backend process yet when I try to connect through psql). I could set the break-points but these are not hit while it must. I think I should not be attaching postmaster parent process instead attach the backend process but how? how do I get the backend process id? Please note that ps -ef does not show backend process and also I can't run `select pg_backend_pid()` as connection is not authorized yet. Can you suggest how to debug this backend code? especially files: auth.c, auth-sasl.c in directory src/backend/libpq). Appreciate your help. Thanks, Mahendrakar.
mahendrakar s <mahendrakarforpg@gmail.com> writes: > I'm trying to debug libpq backend code (files: auth.c, auth-sasl.c in > directory src/backend/libpq). > I followed: Developer FAQ - PostgreSQL wiki and attached postgres > process ( because connection is still in progress and I don't see > backend process yet when I try to connect through psql). I could set > the break-points but these are not hit while it must. I think I should > not be attaching postmaster parent process instead attach the backend > process but how? The traditional answer is to set pre_auth_delay high enough to give yourself time to identify the new backend process (via "ps") and attach to it in gdb. You might also be able to attach to the postmaster in gdb and persuade it to follow the fork(), but I'm not very sure about the details of making that work while not complicating your life with a bunch of other postmaster children. regards, tom lane