使用ThreadSanitizer线程检查工具

  • 时间:
  • 浏览:1
  • 来源:uu快3计划师_uu快3app苹果_全天计划

后边的代码在不加锁的情況下,有有另一个进程运行一齐去修改Global变量,从而原应着Data Race。使用gcc的-fsanitize=thread 编译,执行

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

Data Race的疑问非常难查,Data Race一旦地处,结果是不可预期的,他说直接就Crash了,他说原应着执行流程错乱了,他说把内存破坏原应着之前 某个时刻老要Crash了。

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

Data Race是指多个进程运行在这样正确加锁的情況下,一齐访问同一块数据,之前 至少 有有另一个进程运行是写操作,对数据的读取和修改产生了竞争,从而原应着各种不可预计的疑问。

ThreadSanitizer又叫TSan,是有有另一个检查进程运行Data Race的C/C++工具。它集成在新版的gcc和clang中,通过编译时加-fsanitize=thread,可不能能在运行时检测出Data Race的疑问。