使用ThreadSanitizer线程检查工具

  • 时间:
  • 浏览:0

Data Race是指多个线程运行在没人正确加锁的状态下,一并访问同一块数据,我你会至少有有一一好几个 多线程运行是写操作,对数据的读取和修改产生了竞争,从而原困各种不可预计的问提。

执行线程运行,我你会处于Data Race,错误信息会直接输出出来。我你会错误信息比较多,重定向输出流到文件里,慢慢分析:

Data Race的问提非常难查,Data Race一旦处于,结果是不可预期的,也许直接就Crash了,也许原困执行流程错乱了,也许把内存破坏原困前一天某个时刻老会 Crash了。

ThreadSanitizer又叫TSan,是有一一好几个 多多检查线程运行Data Race的C/C++工具。它集成在新版的gcc和clang中,通过编译时加-fsanitize=thread,还前要在运行时检测出Data Race的问提。

中间的代码在不加锁的状态下,有一一好几个 多线程运行一并去修改Global变量,从而原困Data Race。使用gcc的-fsanitize=thread 编译,执行

ThreadSanitizer官网:https://code.google.com/p/thread-sanitizer