我想从C源代码生成程序依赖图(PDG).我找到了解释它是怎么做的论文,但都使用了商业CodeSurfer工具.
有没有可以完成这项工作的免费工具或开源项目?
我需要调试一个丑陋而庞大的数学C库,可能是由f2c生成的.代码滥用局部静态变量,不幸的是它似乎在某处利用了这些自动初始化为0的事实.如果使用相同的输入两次调用其入口函数,则它会给出不同的结果.如果我卸载库并重新加载它,它可以正常工作.它需要很快,所以我想摆脱加载/卸载.
我的问题是如何使用valgrind或任何其他工具发现这些错误,而无需手动遍历整个代码.
我正在寻找声明本地静态变量的地方,先读取,然后再写.由于静态变量有时会通过指针进一步传递(是的 - 它太丑了),这个问题更加复杂了.
我理解有人可以说这样的错误不应该被自动工具检测到,因为在某些情况下这恰好是预期的行为.还有,有没有办法让自动初始化的本地静态变量"脏"?