Обсуждение: Debugging PostgreSQL with GDB

Поиск
Список
Период
Сортировка

Debugging PostgreSQL with GDB

От
"Manolo SupaMA"
Дата:
Hi.<br /><br />I have problems on how to debug PostgreSQL on Linux using GDB. I made some changes to
src/backend/utils/sort/tuplesort.cbut it hangs while performing run formation (where my changes are).<br /><br />I
configuredit using<br /><br />./configure --prefix="/usr/local/pgsql/8.3/" CFLAGS="-O0 -DTRACE_SORT" --enable-debug
--enable-cassert--enable-depend<br /><br />and trying to debug it using<br /><br />'gdb postmaster'<br />(which
revealedto be not a very good idea) and <br /> 'gdb pg_ctl' followed by 'run -D /usr/local/psql/data'<br /><br />This
lastchoice allowed me to set a breackpoint on puttuple_common (contained into tuplesort.c) but then I'm unable to run
'psql'.<a href="http://pastebin.com/m6a97b4dd">http://pastebin.com/m6a97b4dd</a><br /><br />I'm new on GDB and it's
alsomy first postgrest patch. I just want some suggestion to know if I'm on the right way or not.<br /><br />Thanks for
yourtime.<br /><br />PS: I suppose I'll write some related  "HowTo Debug PostgreSQL with GDB - Basics" for newbies like
me.<br/><br /> 

Re: Debugging PostgreSQL with GDB

От
"korry"
Дата:
> I have problems on how to debug PostgreSQL on Linux using GDB. I made 
> some changes to src/backend/utils/sort/tuplesort.c but it hangs while 
> performing run formation (where my changes are).
>
> I configured it using
>
> ./configure --prefix="/usr/local/pgsql/8.3/" CFLAGS="-O0 -DTRACE_SORT" 
> --enable-debug --enable-cassert --enable-depend
>
> and trying to debug it using
>
> 'gdb postmaster'
> (which revealed to be not a very good idea) and
> 'gdb pg_ctl' followed by 'run -D /usr/local/psql/data'
>
> This last choice allowed me to set a breackpoint on puttuple_common 
> (contained into tuplesort.c) but then I'm unable to run 'psql'. 
> http://pastebin.com/m6a97b4dd
Run psql, find the process ID of the backend (server) process by 
executing the command "SELECT * FROM pg_backend_pid();",
then attach to that process with gdb and set a breakpoint in your new 
code; finally, go back to your psql session and execute a command that 
exercises your code.
                  -- Korry

-- 
 Korry Douglas  <korryd@enterprisedb.com> EnterpriseDB    http://www.enterprisedb.com



Re: Debugging PostgreSQL with GDB

От
Andrew Dunstan
Дата:

Manolo SupaMA wrote:
> Hi.
>
> I have problems on how to debug PostgreSQL on Linux using GDB. I made 
> some changes to src/backend/utils/sort/tuplesort.c but it hangs while 
> performing run formation (where my changes are).
>
> I configured it using
>
> ./configure --prefix="/usr/local/pgsql/8.3/" CFLAGS="-O0 -DTRACE_SORT" 
> --enable-debug --enable-cassert --enable-depend
>
> and trying to debug it using
>
> 'gdb postmaster'
> (which revealed to be not a very good idea) and
> 'gdb pg_ctl' followed by 'run -D /usr/local/psql/data'
>
> This last choice allowed me to set a breackpoint on puttuple_common 
> (contained into tuplesort.c) but then I'm unable to run 'psql'. 
> http://pastebin.com/m6a97b4dd
>
> I'm new on GDB and it's also my first postgrest patch. I just want 
> some suggestion to know if I'm on the right way or not.
>
> Thanks for your time.
>
> PS: I suppose I'll write some related  "HowTo Debug PostgreSQL with 
> GDB - Basics" for newbies like me.


The way to do this is to start the postmaster normally, run psql, and 
then attach the debugger to the backend that is talking to your psql 
session.

I would also personally advise using a gdb frontend like ddd. I am also 
told eclipse can work well.

cheers

andrew