Thread: debugging libpq backend code

debugging libpq backend code

From
mahendrakar s
Date:
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.



Re: debugging libpq backend code

From
Tom Lane
Date:
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