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

Posted

技术标签:

【中文标题】在 C 代码库中查找全局/静态变量的工具【英文标题】:Tool to find global/static variables in C codebase 【发布时间】:2010-12-14 07:45:14 【问题描述】:

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

起初这失败了,因为 C 代码使用静态变量,因此不是线程安全的。我们认为我们已经删除了所有静态和全局变量,但仍然没有得到预期的结果。 (如果我们只有一个实例,一切都会运行良好。)

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

感谢您的建议!

【问题讨论】:

【参考方案1】:

如果您可以在更类似于 unix 的环境中构建它,您应该有一个可以在 .o 文件上运行的 size 命令,它将告诉您每个 @987654325 的 databss 段大小@ 文件。这是查找静态存储持续时间变量的一种非常快速的方法(只需在这些字段中查找非零大小)。

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

【讨论】:

您是否找到了与 MSVC 类似的工具?

以上是关于在 C 代码库中查找全局/静态变量的工具的主要内容,如果未能解决你的问题,请参考以下文章

C++ 静态库中的共享全局变量

打印C中所有全局和静态变量的值?

C/C++全局变量局部变量静态变量和常量

C/C++全局变量局部变量静态变量和常量

局部变量 静态局部变量 全局变量与静态局部变量

java中的全局变量和静态变量是在编译时分配内存还是在加载时分配内存??