我为一个更大的 C 代码库创建了一个 C++ 包装器(一个类),该代码库最初是为微处理器编写的。现在我们要模拟运行此 C 代码的“代理”的多个实例。因为我们想看看它们是如何相互作用的,所以我们需要同时运行它们。如果可能,我们希望在一个进程中运行它们。
这首先失败了,因为 C 代码使用静态变量,因此不是线程安全的。我们以为我们已经删除了所有静态和全局变量,但仍然没有得到预期的结果。 (如果我们只有一个实例,一切都运行良好。)
所以我的问题是:不是在整个代码库中搜索此类变量,是否有任何工具可以帮助找到问题? C 代码是用 Keil μVision 编写的,现在在 Visual Studio 2008 Team Suite 中编译。
感谢您的建议!
最佳答案
如果你可以在更像 unix 的环境中构建它,你应该有一个可以在 .o
文件上运行的 size
命令,它会告诉你 data
和 bss
每个 .o
文件的段大小。这是查找静态存储持续时间变量的一种非常快速的方法(只需在这些字段中的任一字段中查找非零大小)。
也许您可以尝试使用 mingw 或 cygwin 进行构建,或者在 MSVC 工具集中寻找类似的工具。
关于c - 在 C 代码库中查找全局/静态变量的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436928/