2013-03-20 112 views
1

这看起来像一个愚蠢的问题,但我需要知道,是否有任何工具可以在我的代码中找到可能的段错误点,而没有测试数据,导致段错误。特别是一些工具在没有测试数据的情况下找到段错误

+6

[静态代码分析](http://en.wikipedia.org/wiki/Static_code_analysis)可能有助于查找_some_问题。 – 2013-03-20 07:52:50

+1

我运行['cppcheck'](http://cppcheck.sourceforge.net/)作为我的构建过程的一部分。 – 2013-03-20 07:57:01

+0

如果您害怕某段代码,您可以为此编写特定的单元测试。我倾向于为我所有的代码编写单元测试(c :,并且我的恐惧减少了。 – 2013-03-20 08:00:40

回答

2

有一般几个选项测试正确使用指针将项目中的数组:

  • 代码审查(在被计算机程序意义上不是一个工具,而是一种工具尽管如此)
  • 静态代码分析
  • 模糊测试
+0

太棒了,非常感谢你在这些方向指引我。工具。应该解决我的问题:) – Damell 2013-03-20 07:59:12

+0

请注意,静态代码分析器可能无法找到所有缺陷,甚至可能产生误报,并且模糊测试的质量在很大程度上取决于代码和测试。您应该考虑在代码覆盖检测的可执行文件上运行模糊测试,以便您可以查看未解码的代码点并编写缺少的测试。 – 2013-03-20 08:10:22

1

一个非常好的选择是ValgrindMemCheck。即使数据不会立即导致分段错误,很可能存在无效的内存访问(悬挂指针,未初始化变量的读取,缓冲区溢出,堆损坏......)。这会在它们发生时指出它们,而不是等待可能只发生在离问题本身很远的分段错误,从而允许您修复它们。

+0

Memcheck无法找到错误,但这可能只是一个巧合。谢谢你的提示 :) – Damell 2013-03-20 12:15:49

相关问题