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

标签 c multithreading thread-safety

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

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

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

感谢您的建议!

最佳答案

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

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

关于c - 在 C 代码库中查找全局/静态变量的工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4436928/

相关文章:

c - VxWorks PPC 中 errno 始终返回零

c - 如何在 Linux 中检查信号处理程序

c++ - 在 C++ 中使用 WinApi 进行多线程

multithreading - 了解 Julia 中的多线程行为

c++ - 如果 I/O read() 处于阻塞阶段,如何使用 Ctrl+C 退出 C++ 程序?

ruby-on-rails - 以线程安全的方式刷新 OAuth 客户端 token

multithreading - Boost Asio是否按顺序调用异步处理程序

c - 从结构中输出值

c - 动态分配char指针指针

ruby - 创建一个线程安全的临时文件名