mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Add item about server-side debugging.
This commit is contained in:
37
doc/FAQ_DEV
37
doc/FAQ_DEV
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
Developer's Frequently Asked Questions (FAQ) for PostgreSQL
|
Developer's Frequently Asked Questions (FAQ) for PostgreSQL
|
||||||
|
|
||||||
Last updated: Sun Mar 13 22:07:18 EST 2005
|
Last updated: Sat Apr 23 14:57:40 EDT 2005
|
||||||
|
|
||||||
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
Current maintainer: Bruce Momjian (pgman@candle.pha.pa.us)
|
||||||
|
|
||||||
@ -42,6 +42,7 @@ Technical Questions
|
|||||||
2.5) Why do we use palloc() and pfree() to allocate memory?
|
2.5) Why do we use palloc() and pfree() to allocate memory?
|
||||||
2.6) What is ereport()?
|
2.6) What is ereport()?
|
||||||
2.7) What is CommandCounterIncrement()?
|
2.7) What is CommandCounterIncrement()?
|
||||||
|
2.8) What debugging features are available?
|
||||||
_________________________________________________________________
|
_________________________________________________________________
|
||||||
|
|
||||||
General Questions
|
General Questions
|
||||||
@ -762,3 +763,37 @@ typedef struct nameData
|
|||||||
to be broken into pieces so each piece can see rows modified by
|
to be broken into pieces so each piece can see rows modified by
|
||||||
previous pieces. CommandCounterIncrement() increments the Command
|
previous pieces. CommandCounterIncrement() increments the Command
|
||||||
Counter, creating a new part of the transaction.
|
Counter, creating a new part of the transaction.
|
||||||
|
|
||||||
|
2.8) What debugging features are available?
|
||||||
|
|
||||||
|
First, try running configure with the --enable-cassert option, many
|
||||||
|
assert()s monitor the progress of the backend and halt the program
|
||||||
|
when something unexpected occurs.
|
||||||
|
|
||||||
|
The postmaster has a -d option that allows even more detailed
|
||||||
|
information to be reported. The -d option takes a number that
|
||||||
|
specifies the debug level. Be warned that high debug level values
|
||||||
|
generate large log files.
|
||||||
|
|
||||||
|
If the postmaster is not running, you can actually run the postgres
|
||||||
|
backend from the command line, and type your SQL statement directly.
|
||||||
|
This is recommended only for debugging purposes. If you have compiled
|
||||||
|
with debugging symbols, you can use a debugger to see what is
|
||||||
|
happening. Because the backend was not started from postmaster, it is
|
||||||
|
not running in an identical environment and locking/backend
|
||||||
|
interaction problems may not be duplicated.
|
||||||
|
|
||||||
|
If the postmaster is running, start psql in one window, then find the
|
||||||
|
PID of the postgres process used by psql using SELECT
|
||||||
|
pg_backend_pid(). Use a debugger to attach to the postgres PID. You
|
||||||
|
can set breakpoints in the debugger and issue queries from psql. If
|
||||||
|
you are debugging postgres startup, you can set PGOPTIONS="-W n", then
|
||||||
|
start psql. This will cause startup to delay for n seconds so you can
|
||||||
|
attach to the process with the debugger, set any breakpoints, and
|
||||||
|
continue through the startup sequence.
|
||||||
|
|
||||||
|
You can also compile with profiling to see what functions are taking
|
||||||
|
execution time. The backend profile files will be deposited in the
|
||||||
|
pgsql/data/base/dbname directory. The client profile file will be put
|
||||||
|
in the client's current directory. Linux requires a compile with
|
||||||
|
-DLINUX_PROFILE for proper profiling.
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<H1>Developer's Frequently Asked Questions (FAQ) for
|
<H1>Developer's Frequently Asked Questions (FAQ) for
|
||||||
PostgreSQL</H1>
|
PostgreSQL</H1>
|
||||||
|
|
||||||
<P>Last updated: Sun Mar 13 22:07:18 EST 2005</P>
|
<P>Last updated: Sat Apr 23 14:57:40 EDT 2005</P>
|
||||||
|
|
||||||
<P>Current maintainer: Bruce Momjian (<A href=
|
<P>Current maintainer: Bruce Momjian (<A href=
|
||||||
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
|
"mailto:pgman@candle.pha.pa.us">pgman@candle.pha.pa.us</A>)<BR>
|
||||||
@ -71,6 +71,8 @@
|
|||||||
<I>pfree</I>() to allocate memory?<BR>
|
<I>pfree</I>() to allocate memory?<BR>
|
||||||
<A href="#2.6">2.6</A>) What is ereport()?<BR>
|
<A href="#2.6">2.6</A>) What is ereport()?<BR>
|
||||||
<A href="#2.7">2.7</A>) What is CommandCounterIncrement()?<BR>
|
<A href="#2.7">2.7</A>) What is CommandCounterIncrement()?<BR>
|
||||||
|
<A href="#2.8">2.8</A>) What debugging features are available?<BR>
|
||||||
|
|
||||||
<BR>
|
<BR>
|
||||||
|
|
||||||
<HR>
|
<HR>
|
||||||
@ -941,6 +943,45 @@
|
|||||||
modified by previous pieces. <I>CommandCounterIncrement()</I>
|
modified by previous pieces. <I>CommandCounterIncrement()</I>
|
||||||
increments the Command Counter, creating a new part of the
|
increments the Command Counter, creating a new part of the
|
||||||
transaction.</P>
|
transaction.</P>
|
||||||
|
|
||||||
|
<H3><A name="2.8">2.8</A>) What debugging features are
|
||||||
|
available?</H3>
|
||||||
|
|
||||||
|
<P>First, try running <I>configure</I> with the --enable-cassert
|
||||||
|
option, many <I>assert()</I>s monitor the progress of the backend
|
||||||
|
and halt the program when something unexpected occurs.</P>
|
||||||
|
|
||||||
|
<P>The <I>postmaster</I> has a <I>-d</I> option that allows even more
|
||||||
|
detailed information to be reported. The <I>-d</I> option takes a
|
||||||
|
number that specifies the debug level. Be warned that high debug
|
||||||
|
level values generate large log files.</P>
|
||||||
|
|
||||||
|
<P>If the <I>postmaster</I> is not running, you can actually run the
|
||||||
|
<I>postgres</I> backend from the command line, and type your
|
||||||
|
<SMALL>SQL</SMALL> statement directly. This is recommended
|
||||||
|
<B>only</B> for debugging purposes. If you have compiled with debugging
|
||||||
|
symbols, you can use a debugger to see what is happening. Because
|
||||||
|
the backend was not started from <I>postmaster</I>, it is not
|
||||||
|
running in an identical environment and locking/backend interaction
|
||||||
|
problems may not be duplicated.</P>
|
||||||
|
|
||||||
|
<P>If the <I>postmaster</I> is running, start <I>psql</I> in one
|
||||||
|
window, then find the <SMALL>PID</SMALL> of the <I>postgres</I>
|
||||||
|
process used by <I>psql</I> using <CODE>SELECT pg_backend_pid()</CODE>.
|
||||||
|
Use a debugger to attach to the <I>postgres</I> <SMALL>PID</SMALL>.
|
||||||
|
You can set breakpoints in the debugger and issue queries from
|
||||||
|
|
||||||
|
<I>psql</I>. If you are debugging <I>postgres</I> startup, you can
|
||||||
|
set PGOPTIONS="-W n", then start <I>psql</I>. This will cause startup
|
||||||
|
to delay for <I>n</I> seconds so you can attach to the process with
|
||||||
|
the debugger, set any breakpoints, and continue through the startup
|
||||||
|
sequence.</P>
|
||||||
|
|
||||||
|
<P>You can also compile with profiling to see what functions are
|
||||||
|
taking execution time. The backend profile files will be deposited
|
||||||
|
in the <I>pgsql/data/base/dbname</I> directory. The client profile
|
||||||
|
file will be put in the client's current directory. Linux requires
|
||||||
|
a compile with <I>-DLINUX_PROFILE</I> for proper profiling.</P>
|
||||||
</BODY>
|
</BODY>
|
||||||
</HTML>
|
</HTML>
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user