breaks on-disk database compatibility,
meaning you cannot use <command>pg_upgrade</command> to upgrade to
a build with a different WAL block size.
</para>
</listitem>
</varlistentry>
</variablelist>
</sect3>
<sect3 id="configure-options-devel">
<title>Developer Options</title>
<para>
Most of the options in this section are only of interest for
developing or debugging <productname>PostgreSQL</productname>.
They are not recommended for production builds, except
for <option>--enable-debug</option>, which can be useful to enable
detailed bug reports in the unlucky event that you encounter a bug.
On platforms supporting DTrace, <option>--enable-dtrace</option>
may also be reasonable to use in production.
</para>
<para>
When building an installation that will be used to develop code inside
the server, it is recommended to use at least the
options <option>--enable-debug</option>
and <option>--enable-cassert</option>.
</para>
<variablelist>
<varlistentry id="configure-option-enable-debug">
<term><option>--enable-debug</option></term>
<listitem>
<para>
Compiles all programs and libraries with debugging symbols.
This means that you can run the programs in a debugger
to analyze problems. This enlarges the size of the installed
executables considerably, and on non-GCC compilers it usually
also disables compiler optimization, causing slowdowns. However,
having the symbols available is extremely helpful for dealing
with any problems that might arise. Currently, this option is
recommended for production installations only if you use GCC.
But you should always have it on if you are doing development work
or running a beta version.
</para>
</listitem>
</varlistentry>
<varlistentry id="configure-option-enable-cassert">
<term><option>--enable-cassert</option></term>
<listitem>
<para>
Enables <firstterm>assertion</firstterm> checks in the server, which test for
many <quote>cannot happen</quote> conditions. This is invaluable for
code development purposes, but the tests can slow down the
server significantly.
Also, having the tests turned on won't necessarily enhance the
stability of your server! The assertion checks are not categorized
for severity, and so what might be a relatively harmless bug will
still lead to server restarts if it triggers an assertion
failure. This option is not recommended for production use, but
you should have it on for development work or when running a beta
version.
</para>
</listitem>
</varlistentry>
<varlistentry id="configure-option-enable-tap-tests">
<term><option>--enable-tap-tests</option></term>
<listitem>
<para>
Enable tests using the Perl TAP tools. This requires a Perl
installation and the Perl module <literal>IPC::Run</literal>.
See <xref linkend="regress-tap"/> for more information.
</para>
</listitem>
</varlistentry>
<varlistentry id="configure-option-enable-depend">
<term><option>--enable-depend</option></term>
<listitem>
<para>
Enables automatic dependency tracking. With this option, the
makefiles are set up so that all affected object files will
be rebuilt when any header file is changed. This is useful
if you are doing development work, but is just wasted overhead
if you intend only to compile once and install. At present,
this option only works with GCC.
</para>
</listitem>
</varlistentry>
<varlistentry id="configure-option-enable-coverage">
<term><option>--enable-coverage</option></term>