SuperAPI AI 工具集

nginx-c-module-debug

部署与运维

查看项目

更新于 10-15 15:00

技能介绍

用途

本技能提供 nginx C 模块的调试与诊断指南,内容源自 nginx 官方开发文档及生产环境调试经验,共包含 8 个类别、45 条规则,并按影响程度划分优先级,帮助开发者系统化地定位 nginx 模块中的崩溃、内存缺陷和行为异常。

主要能力(按优先级分类)

  1. 崩溃诊断与信号(CRITICAL,前缀 crash-):从信号与地址识别段错误特征、识别空指针解引用模式、诊断请求引用计数导致的双重 finalize 崩溃、检测递归子请求或过滤器链引发的栈溢出、从 worker 退出日志提取崩溃上下文、避免 error_page 内部重定向上下文失效导致的崩溃。

  2. 内存缺陷检测(CRITICAL,前缀 memdbg-):检测内存池销毁时机导致的释放后使用、从 worker RSS 增长识别内存池泄漏模式、诊断多 worker 崩溃引发的共享内存 slab 损坏、检测缺失内存池清理处理器造成的资源泄漏、发现 ngx_pnalloc 大小计算错误导致的缓冲区溢出、避免在临时内存池中存放长生命周期指针、使用 Valgrind 内存池级追踪定位泄漏分配。

  3. GDB 与核心转储分析(HIGH,前缀 gdb-):为 nginx worker 崩溃配置核心转储生成、将 GDB 附加到运行中的 worker 进程、阅读 nginx 回溯以定位崩溃模块与阶段、在 GDB 中检查 ngx_http_request_t 字段、用 GDB 脚本从内存缓冲区提取调试日志、用 GDB 观察点捕获写入时的内存损坏。

  4. 请求流转追踪(HIGH,前缀 trace-):追踪请求经过 HTTP 阶段处理器、映射子请求父子关系、追踪过滤器链执行顺序与数据流、追踪 upstream 回调序列以调试代理、追踪连接调试的事件处理器执行、追踪 server 与 location 块中的配置继承。

  5. 调试日志模式(MEDIUM-HIGH,前缀 dbglog-):使用正确的调试掩码进行定向日志过滤、用 debug_connection 隔离单个客户端的调试输出、使用内存缓冲区日志避免磁盘 I/O、设置日志动作字符串为错误消息提供上下文、在调试日志中正确格式化 ngx_str_t。

  6. 状态与生命周期调试(MEDIUM,前缀 state-):追踪连接状态转换、通过记录转换点调试 upstream 模块状态、检测内存池销毁前未移除事件导致的定时器泄漏、检查事件标志以调试意外处理器调用、追踪请求引用计数以调试过早销毁。

  7. 动态追踪工具(MEDIUM,前缀 probe-):用 strace 追踪 worker 系统调用模式、用 DTrace pid provider 追踪请求处理、用 SystemTap 追踪内存池分配、用 eBPF 探针测量逐函数延迟、用 strace 与 /proc 检测文件描述符泄漏。

  8. 构建与 Sanitizer 配置(LOW-MEDIUM,前缀 build-):以完整调试符号且无优化编译 nginx、用 AddressSanitizer 构建以检测内存错误、使用单进程模式简化调试、使用 nginx Valgrind 抑制规则减少误报、启用 NGX_DEBUG_PALLOC 进行细粒度内存池分配追踪。

使用方式

按需阅读各参考文件获取详细说明与代码示例。参考文件包括:references/_sections.md(类别定义与排序)、assets/templates/_template.md(新增规则模板)、metadata.json(版本与参考信息)。

适用场景

  • 诊断 nginx worker 崩溃(段错误、SIGABRT、SIGSEGV)
  • 查找内存缺陷(释放后使用、泄漏、内存池损坏、缓冲区溢出)
  • 为 nginx 配置 GDB 与核心转储分析
  • 追踪请求在阶段、子请求与过滤器链中的流转
  • 为 nginx 模块添加调试日志与动态追踪工具

限制

本技能为调试与诊断指南,与 nginx-c-modules(正确性)和 nginx-c-module-perf-reliability(性能)互为补充。资料未提供具体安装命令、收费信息或平台支持范围,暂未提供。