MUSA Compute Sanitizer 最佳实践
本文档提供场景化的快速参考,帮助你快速找到常见问题的解决方案。
快速命令参考
基本使用:
# 默认检查(越界 + API 错误)
mt-compute-sanitizer ./my_program
# 启用所有检查(包括泄漏检查)
mt-compute-sanitizer --leak-check=full ./my_program
# 禁用 API 错误检查
mt-compute-sanitizer --report-api-errors=no ./my_program
常用选项:
| 选项 | 描述 | 默认值 |
|---|---|---|
--leak-check=full | 启用内存泄漏检查 | no |
--report-api-errors=no | 禁用 API 错误报告 | all |
场景一:首次使用 - 检查程序错误
用户问题
"我刚写完一个 MUSA 程序,运行时报错了,但我不知道具体哪里有问题,该怎么排查?"
解决步骤
最简单的使用方式:直接运行程序
mt-compute-sanitizer ./my_program
Sanitizer 会自动检测以下错误:
- 内存越界访问
- 内存泄漏
- API 调用错误
预期输出
========= COMPUTE-SANITIZER
==PROF== 'my_program' started, pid:123456
==PROF== 'my_program' exit, exit code(0)
========= ERROR SUMMARY: 0 errors
如果有错误:
========= Device memory out of bounds. Address: 0x...
========= ERROR SUMMARY: 1 error
下一步
- 无错误 → 继续 场景五 启用更多检查
- 有错误 → 根据错误类型查看对应场景
场景二:检查内存越界访问
用户问题
"我的程序有时候能跑、有时候不能跑,怀疑是数组访问越界了,怎么确定?"
快速解决
# 越界检查默认启用
mt-compute-sanitizer ./my_program