The source code is divided up into the following directories:
$SRCROOT/server | The source code for the core server. |
$SRCROOT/include | The header files for the core server. |
$SRCROOT/srclib/apr | The source code for the portable runtime environment. |
$SRCROOT/srclib/apr-util | The source code for the portable runtime utility code. |
$SRCROOT/support | The source code for the utilities. |
$SRCROOT/modules | Contains the source code for the modules. |
If a stacktrace or debugging session shows that a specific routine is at fault, the find command can be used to locate the C code that comprises that function (or macro).
To find the definition of the portable runtime function apr_array_make:
find . -name \*.h | xargs egrep "apr_array_make"
returns:
./srclib/apr/include/apr_tables.h:APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p, ... ...
NOTE: This shows that the apr_array_make function prototype is located in the file apr_tables.h.
Once the function prototype is located, the find and grep utilities can be used to to locate the source file that contains the function definition:
find . -name \*.c | xargs egrep "apr_array_header_t.*apr_array_make"
returns:
/srclib/apr/tables/apr_tables.c:APR_DECLARE(apr_array_header_t *) apr_array_make(apr_pool_t *p, ... ...
NOTE: This shows that the function definition is located in the file apr_tables.c.
Depending on how functions (and macros) are defined, the results may require some additional visual processing.