此条目与一个提议的PostgreSQL功能相关,该功能在公开发布之前已被撤回。
backtrace_on_internal_error 是一个 配置参数,用于控制在调用 elog() 或等效的 ereport() 来报告内部错误时是否记录回溯信息。
backtrace_on_internal_error 在 PostgreSQL 17 中添加,但随后被撤销。
用法
如果 backtrace_on_internal_error 被启用,并且引发了错误代码为 XX000 的错误,则会在服务器日志中与错误消息一起写入回溯信息。
默认
backtrace_on_internal_error 的默认值为:off。
按 PostgreSQL 版本详细信息
backtrace_on_internal_error (PostgreSQL 17)
| 设置 | off |
| 单位 | |
| 类别 | 开发者选项 |
| 简短描述 | 记录错误代码为 XX000 (内部错误) 的任何错误的堆栈跟踪。 |
| 扩展描述 | |
| 上下文 | superuser |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
变更历史
示例
启用 backtrace_on_internal_error 时的示例日志输出
[2023-12-30 10:00:45 UTC] ERROR: XX000: could not read WAL from timeline 1 at 0/40541D0: invalid record length at 0/40541D0: expected at least 24, got 0
[2023-12-30 10:00:45 UTC] LOCATION: SummarizeWAL, walsummarizer.c:865
[2023-12-30 10:00:45 UTC] BACKTRACE:
postgres: node2: walsummarizer () [0x7f5749]
postgres: node2: walsummarizer (WalSummarizerMain+0x374) [0x7f63af]
postgres: node2: walsummarizer (AuxiliaryProcessMain+0x17c) [0x7e9c45]
postgres: node2: walsummarizer () [0x7eff18]
postgres: node2: walsummarizer () [0x7f09c6]
postgres: node2: walsummarizer () [0x7f2083]
postgres: node2: walsummarizer (BackgroundWorkerInitializeConnection+0) [0x7f33e7]
postgres: node2: walsummarizer (main+0x203) [0x715374]
/lib64/libc.so.6(__libc_start_main+0xe5) [0x7fb0b4a63d85]
postgres: node2: walsummarizer (_start+0x2e) [0x491f3e]
