Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C代码库中查找全局/静态变量的工具_C_Multithreading_Thread Safety - Fatal编程技术网

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

在C代码库中查找全局/静态变量的工具,c,multithreading,thread-safety,C,Multithreading,Thread Safety,我为一个更大的C代码库创建了一个C++包装器(类),它最初是为微处理器编写的。现在我们要模拟运行此C代码的“代理”的多个实例。当我们想看到它们如何交互时,我们需要同时运行它们。如果可能,我们希望在一个进程中运行它们 这在一开始失败了,因为C代码使用了静态变量,因此不是线程安全的。我们认为我们已经删除了所有静态和全局变量,但仍然没有得到预期的结果。(如果我们只有一个实例,那么一切都会正常运行。) 所以我的问题是:除了在整个代码库中搜索这些变量之外,是否有任何工具可以帮助找到问题?C代码是用Keil

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

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

所以我的问题是:除了在整个代码库中搜索这些变量之外,是否有任何工具可以帮助找到问题?C代码是用KeilμVision编写的,现在在VisualStudio2008团队套件中编译


谢谢你的建议

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


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

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


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

您在MSVC中找到类似的工具了吗?您在MSVC中找到类似的工具了吗?