用途:该技能用于解读 Valgrind Memcheck 输出,辅助 ikigai 项目进行内存调试。
主要能力:
- 识别 Invalid Read/Write:读写越过缓冲区边界或访问已释放内存,建议检查数组下标、缓冲区大小与释放后使用问题。
- 识别未初始化值使用:条件跳转或移动依赖未初始化值,建议初始化变量、使用 memset、检查所有代码路径。
- 识别 Invalid free:重复释放或释放无效指针,建议跟踪所有权,使用 talloc 的层级释放。
- 分析内存泄漏:definitely lost 为无指针指向的真实泄漏;indirectly lost 为仅通过真实泄漏可达;possibly lost 为存在内部指针,可能是有意为之;still reachable 为退出时仍可访问,通常可接受。
使用方式:
- 通过检查脚本运行,不要直接运行 make:check-valgrind
- 直接调用:valgrind --leak-check=full --track-origins=yes ./ikigai
- 常用选项:--leak-check=full、--track-origins=yes、--show-reachable=yes、--suppressions=file.supp、--gen-suppressions=all
- 线程调试:valgrind --tool=helgrind ./ikigai,可检测数据竞争、锁顺序违规、POSIX 线程 API 误用。
- 栈回溯自下而上阅读:main 调用 load_config 调用 parse_json,错误发生在 parse_json。
限制:资料未提供该技能的安装方式、平台、收费信息及完整使用步骤。