并发调试工具 TSan
Clang ThreadSanitizer (TSan)
https://valgrind.org/docs/manual/hg-manual.html
https://valgrind.org/docs/manual/drd-manual.html
内核的工具在 ./kernel 中讨论吧
显然,思考的角度:
- 原理
- 性能影响
- 使用限制
- 那些无法发现
- 那些被误判
两个 san 工具
是所有的编译器都是有这个东西吗?
带 AddressSanitizer 的调试版本,用于检测内存错误(use-after-free、double-free、越界等):
gcc -o pthread/elimination-backoff-stack.asan
pthread/elimination-backoff-stack.c
-lpthread -O0 -g -fsanitize=address -std=c11
• -fsanitize=address:注入 ASan 运行时检测
• -O0:关闭优化,确保栈跟踪信息准确
• 运行时会显著变慢(约 10-20 倍),但能精确定位内存 bug
还有一个 .tsan
对话过程中还生成了 ThreadSanitizer 版本(检测 data race):
gcc -o pthread/elimination-backoff-stack.tsan … -fsanitize=thread
本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。