From 9f1e864d02ed4ec57105e531815ac7c113963559 Mon Sep 17 00:00:00 2001
From: Bruce Momjian
Date: Sat, 23 Apr 2005 18:57:46 +0000
Subject: [PATCH] Add item about server-side debugging.
---
doc/FAQ_DEV | 37 +++++++++++++++++++++++++++++++++-
doc/src/FAQ/FAQ_DEV.html | 43 +++++++++++++++++++++++++++++++++++++++-
2 files changed, 78 insertions(+), 2 deletions(-)
diff --git a/doc/FAQ_DEV b/doc/FAQ_DEV
index 7e0839dbfc..b30ff1337c 100644
--- a/doc/FAQ_DEV
+++ b/doc/FAQ_DEV
@@ -1,7 +1,7 @@
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)
@@ -42,6 +42,7 @@ Technical Questions
2.5) Why do we use palloc() and pfree() to allocate memory?
2.6) What is ereport()?
2.7) What is CommandCounterIncrement()?
+ 2.8) What debugging features are available?
_________________________________________________________________
General Questions
@@ -762,3 +763,37 @@ typedef struct nameData
to be broken into pieces so each piece can see rows modified by
previous pieces. CommandCounterIncrement() increments the Command
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.
diff --git a/doc/src/FAQ/FAQ_DEV.html b/doc/src/FAQ/FAQ_DEV.html
index 111fb12a0c..a9ef832f29 100644
--- a/doc/src/FAQ/FAQ_DEV.html
+++ b/doc/src/FAQ/FAQ_DEV.html
@@ -13,7 +13,7 @@
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)
@@ -71,6 +71,8 @@
pfree() to allocate memory?
2.6) What is ereport()?
2.7) What is CommandCounterIncrement()?
+ 2.8) What debugging features are available?
+
@@ -941,6 +943,45 @@
modified by previous pieces. CommandCounterIncrement()
increments the Command 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.