在C代码库中查找全局/静态变量的工具

时间:2010-12-14 07:45:15

标签: c multithreading thread-safety

我为更大的C代码库创建了一个C ++包装器(一个类),它最初是为微处理器编写的。现在我们要模拟运行此C代码的“代理”的多个实例。我们希望看到它们如何相互作用,我们需要同时运行它们。如果可能,我们希望在一个过程中运行它们。

这首先失败了,因为C代码使用了静态变量,因此不是线程安全的。我们认为我们已经删除了所有静态和全局变量,但仍未获得预期结果。 (如果我们只有一个实例,那么一切运行正常。)

所以我的问题是:是否有任何工具可以帮助找到问题,而不是在整个代码库中搜索这些变量? C代码是用KeilμVision编写的,现在在Visual Studio 2008 Team Suite中编译。

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

如果您可以在更多unix-ish环境中构建它,那么您应该有一个size命令可以在.o个文件上运行,它会告诉您data和{{1每个bss文件的段大小。这是查找静态存储持续时间变量的一种非常快速的方法(只需在这两个字段中查找非零大小)。

也许您可以尝试使用mingw或cygwin构建,或者在MSVC工具集中寻找类似的工具。