2016-02-01 33 views
3

如果程序沒有按照C++ 11標準以可預測的方式運行,是否有任何命令行選項或技術可以使GCC編譯器報告錯誤?是否有任何技術來檢測與GCC未定義行爲?

+3

一個良好的開端是'-Wall -Werror'編譯。 – erip

+1

通過「程序」,你的意思是編譯器或者你正在寫的程序? – Maestro

+2

GCC有[Undefined Behavior Sanitizer](http://stackoverflow.com/questions/20738232/gcc-4-9-undefined-behavior-sanitizer)。 – LogicStuff

回答

4

...使編譯器報告的一些錯誤......

是的,有一些警告的根本察覺可能UB,你可以使用的-Werror選項把警告轉化爲錯誤GCC。

同樣如@LogicStuff's comment中所述,GCC支持Undefined Behavior Sanitizer

雖然更好的工具來檢測UB大多是靜態代碼分析工具,它可以檢測到大多數這樣的缺陷。

你必須雖然應對任何情況下誤判,並需要再次深刻檢查你的代碼。

相關問題