在 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 的 data
和 bss
段大小@ 文件。这是查找静态存储持续时间变量的一种非常快速的方法(只需在这些字段中查找非零大小)。
也许您可以尝试使用 mingw 或 cygwin 进行构建,或者在 MSVC 工具集中寻找类似的工具。
【讨论】:
您是否找到了与 MSVC 类似的工具?以上是关于在 C 代码库中查找全局/静态变量的工具的主要内容,如果未能解决你的问题,请参考以下文章