【发布时间】:2014-12-15 15:25:14
【问题描述】:
我收到了一个旧代码 (c),它似乎在不同时间产生了不同的结果。 我能够使用英特尔的编译器和编译器标志 -ftrapuv 始终如一地重现这个问题,这非常有效,我能够确定未初始化的变量是某个堆栈变量。 问题是,下一阶段是什么? 有谁知道如何打印所有堆栈变量的回溯? (或简单地打印堆栈内容) 有没有人有建议或知道英特尔如何提供帮助?还是我应该继续解决这个问题?
谢谢。
【问题讨论】:
-
试试 valgrind,它会找到未初始化变量的读取并打印堆栈跟踪。
-
您可以使用即将推出的 CLang 和 GCC 版本中新的和改进的 UBSanitizer!
-
编译时开启所有警告。或者使用任意数量的静态分析器。 (我不会提到我曾经工作过的那个,但它非常昂贵并且最好。找一个便宜的免费的:这个错误对于工具来说并不难找到。)