Если бы был такой инструмент, то мы все использовали бы его в нашем многопоточном коде. Такой инструмент невозможно написать. Вы можете пометить сомнительные функции, так что вы можете сказать, что определенный фрагмент кода не поточно-безопасный, но не может гарантировать, что это так. Работа на уровне объектного кода в DLL сделает проблему еще сложнее.