Обсуждение: Debugging PostgreSQL with GDB
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 />
> 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
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