From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Chris <chris(at)bitmead(dot)com> |
Cc: | pgsql-hackers(at)postgresql(dot)org |
Subject: | Re: [HACKERS] postgres under gdb |
Date: | 2000-01-28 14:51:35 |
Message-ID: | 10619.949071095@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Chris <chris(at)bitmead(dot)com> writes:
> How do you run postgres under gdb?
If you are running a standalone backend, you just fire it up.
For normal use under a postmaster, the easiest thing I've found is to
start psql (or your favorite client) in one window, start gdb on the
postgres executable in another, and then "attach" to the already-started
backend process. (Use "ps" to discover the backend's PID.) You must
run gdb as postgres, of course, but the client process can belong to
anyone.
It gets a little tricky if you are trying to debug part of the
backend startup sequence. We have a kluge for that: start psql
with PGOPTIONS="-W n". That causes the backend to sleep() for n
seconds fairly early in its startup, giving you time to attach to it
before anything really interesting happens.
In theory you can debug one backend in a live production system
this way, but I wouldn't recommend doing that except in dire need.
If you use gdb to stop the backend while it is holding a lock, you'll
block other backends too --- and holding a spinlock is even worse,
because those other backends will time out after a minute or so.
Better to use a playpen installation.
(Hey Bruce, shouldn't this info be in FAQ_DEV?)
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | The Hermit Hacker | 2000-01-28 14:51:36 | Re: ORDBMS |
Previous Message | Adriaan Joubert | 2000-01-28 14:45:40 | Bit strings |