SuperAPI AI 工具集

gdb-cli

编程与开发

查看项目

更新于 10-16 03:36

技能介绍

用途:用于 C/C++ 程序调试,把源码分析与运行时状态检查结合起来,为 AI 智能体提供调试辅助。适用于分析 core dump 或崩溃转储、用 GDB attach 调试运行中进程、排查崩溃/死锁/内存问题、调试多线程程序。任务与 C/C++ 调试无关、只需通用帮助、或环境没有 GDB 时不适用。

前提:需 Python 3.6.8+、GDB 9.0+ 并启用 Python 支持、Linux 系统。安装:pip install gdb-cli,或 pip install git+https://github.com/Cerdore/gdb-cli.git。可用 gdb -nx -q -batch -ex "python print('OK')" 验证 GDB 是否支持 Python。

用法:先初始化会话。分析 core dump 用 gdb-cli load --binary <binary_path> --core <core_path> [--gdb-path <gdb_path>];调试运行中进程用 gdb-cli attach --pid <pid> [--binary <binary_path>]。输出含 session_id,需保存供后续命令使用。随后收集信息:gdb-cli threads -s $SESSION、gdb-cli bt -s $SESSION --full、gdb-cli registers -s $SESSION。关键步骤是关联源码:从回溯中提取 {file}:{line} in {function},读取崩溃点前后约 20 行源码,用 gdb-cli locals-cmd -s $SESSION --frame <N> 获取局部变量,把代码逻辑与变量值对照。深入排查可用 eval-cmd、ptype、memory、disasm、thread-apply、sharedlibs 等命令;会话管理用 sessions、status、stop。

常见模式:空指针解引用可查 RIP 与指针值是否为 0x0;死锁可对全部线程取回溯,查找 pthread_mutex_lock 与循环等待;内存损坏常表现为在 malloc/free 中崩溃或变量为垃圾值。建议先读源码再根据变量下结论,用 --range 分页,先用 ptype 理解复杂结构,多线程问题检查所有线程。

限制:需要访问进程和 core dump,attach 可能需要相应权限(sudo、ptrace_scope);core dump 可能含敏感数据,仅调试已获授权分析的过程;输出不能替代具体环境下的验证、测试和专家复核。仓库 https://github.com/Cerdore/gdb-cli,PyPI https://pypi.org/project/gdb-cli/。收费与价格信息暂未提供。