gdb 介绍 gdb是GNU DebuggerGNU 调试器的缩写。它是 Linux 和类 Unix 系统下最核心、最强大的底层的代码/进程调试工具由自由软件基金会FSF在上世纪 80 年代开源。如果用通俗的话来解释它在系统运维和开发中的角色它就是 Linux 系统的“CT机”和“手术刀”。️gdb在 Linux 中能干什么平时我们遇到软件报错只能看日志。但当日志不够用或者像你刚才遇到的“进程内存吃满 64G 却不知道里面装了啥”的情况gdb就能直接介入进程的底层死后验尸Core Dump 分析当一个程序崩溃比如报Segmentation fault内存段错误并意外退出时gdb可以读取系统生成的内存断层扫描文件Core 文件精确还原它死在第几行代码、当时内存里是什么数据。活体解剖Attach 动态调试一个进程正在运行突然卡死或者内存狂飙。你可以用gdb attach PID直接“挂载”到这个活体进程上让它在某一瞬间暂停查看它当前正在执行什么函数。内存转储我们刚才用的功能配合它的组件gcore可以在不杀死进程的前提下强行把一个进程的完整内存“拍张照片”下载到磁盘上留作后续分析。️ 它是谁“所辖”的它的背景从归属和技术生态上看gdb属于GNU 计划。GNU 计划的结晶它和著名的gcc编译器、glibcC语言标准库、bash终端外壳一样是构成整个现代 Linux 操作系统最基石的工具链。语言支持它原生主要用来调试C和C语言编写的程序。由于 Go 语言、Rust 等现代语言的底层也是直接编译成机器码的因此gdb同样可以用来调试 Go比如你的cri-docker和 Rust 的底层行为。 为什么刚才推荐你用它因为你的cri-docker已经把内存吃到了 64G这时候它自己已经“神志不清”了任何常规手段都无法向它索要内部账单。而gdb/gcore作为系统的至高管理者可以绕过cri-docker本身直接从 Linux 内核层面把它的内存剥离出来。在不打扰你的 K8s 业务的前提下它是排查这种底层顽固内存泄漏的终极武器。