2013-03-20 103 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

相關問題