diff options
author | Peter Eisentraut <peter@eisentraut.org> | 2023-12-30 11:11:26 +0100 |
---|---|---|
committer | Peter Eisentraut <peter@eisentraut.org> | 2023-12-30 11:43:57 +0100 |
commit | a740b213d4b4d3360ad0cac696e47e5ec0eb8864 (patch) | |
tree | 3a685f9b8eb1b6b7599ddb7926647f2ade4c5e59 /src/backend/utils/misc/guc_tables.c | |
parent | 9d49837d7144e27ad8ea8918acb28f9872cb1585 (diff) | |
download | postgresql-a740b213d4b4d3360ad0cac696e47e5ec0eb8864.tar.gz postgresql-a740b213d4b4d3360ad0cac696e47e5ec0eb8864.zip |
Add GUC backtrace_on_internal_error
When enabled (default off), this logs a backtrace anytime elog() or an
equivalent ereport() for internal errors is called.
This is not well covered by the existing backtrace_functions, because
there are many equally-worded low-level errors in many functions. And
if you find out where the error is, then you need to manually rewrite
the elog() to ereport() to attach the errbacktrace(), which is
annoying. Having a backtrace automatically on every elog() call could
be very helpful during development for various kinds of common errors
from palloc, syscache, node support, etc.
Discussion: https://www.postgresql.org/message-id/flat/ba76c6bc-f03f-4285-bf16-47759cfcab9e@eisentraut.org
Diffstat (limited to 'src/backend/utils/misc/guc_tables.c')
-rw-r--r-- | src/backend/utils/misc/guc_tables.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/src/backend/utils/misc/guc_tables.c b/src/backend/utils/misc/guc_tables.c index 9f59440526f..3945a92dddd 100644 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@ -527,6 +527,7 @@ int log_temp_files = -1; double log_statement_sample_rate = 1.0; double log_xact_sample_rate = 0; char *backtrace_functions; +bool backtrace_on_internal_error = false; int temp_file_limit = -1; @@ -813,6 +814,16 @@ StaticAssertDecl(lengthof(config_type_names) == (PGC_ENUM + 1), struct config_bool ConfigureNamesBool[] = { { + {"backtrace_on_internal_error", PGC_SUSET, DEVELOPER_OPTIONS, + gettext_noop("Log backtrace for any error with error code XX000 (internal error)."), + NULL, + GUC_NOT_IN_SAMPLE + }, + &backtrace_on_internal_error, + false, + NULL, NULL, NULL + }, + { {"enable_seqscan", PGC_USERSET, QUERY_TUNING_METHOD, gettext_noop("Enables the planner's use of sequential-scan plans."), NULL, |