這是一個相當普遍的問題。爲什麼我的代碼崩潰?
如果你有一個包含許多許多代碼行的程序,我們可以說C++。 Durring編譯一切正常,沒有警告沒有錯誤。但在執行程序時突然間凍結,導致崩潰。
如何解決這個問題,如果你幾乎沒有可能發生這種情況的信息(可能是循環,可能是指針,可能是錯誤的初始化,可能是......)。
是否有任何技術或跟蹤程序執行的當前行的分析器?
這是一個相當普遍的問題。爲什麼我的代碼崩潰?
如果你有一個包含許多許多代碼行的程序,我們可以說C++。 Durring編譯一切正常,沒有警告沒有錯誤。但在執行程序時突然間凍結,導致崩潰。
如何解決這個問題,如果你幾乎沒有可能發生這種情況的信息(可能是循環,可能是指針,可能是錯誤的初始化,可能是......)。
是否有任何技術或跟蹤程序執行的當前行的分析器?
你的問題太寬泛了,沒有一般的答案。一般來說,的bug是你的(先不要懷疑編譯器或執行出錯,幾乎總是你的都是錯的,不是系統!)。
首先仔細閱讀Halting Problem和Undecidable Problem。
然後,在代碼中非常謹慎的undefined behavior(UB)(並非所有人都給segmentation faults,請參閱this)。 C++(& C)代碼可以有很多。一些語言(Haskell,Scheme,Common Lisp ....)更好地被指定並且具有更少的UB。
具體地說,
能夠在你的編譯器所有警告和調試信息,所以用g++ -Wall -Wextra -g
編譯如果使用GCC(或同樣與Clang/LLVM)。有時候你會很樂意使用一些消毒劑,例如用some -fsanitize=
標誌進行編譯。
學習更多有關C++,因爲它是一個困難的語言。 (例如rule of 5)。
好奇並學習許多其他語言和概念(所以讀SICP和學習計劃)。
你需要ten years學習編程,所以要耐心等待。
PS。我有偏見的建議是在你的筆記本電腦上安裝Linux。
謝謝我正在照顧'valgrind'和那種 – user3085931
這還不夠。你需要理解C++和你的程序的語義,這真的很難。而且你還應該使用'gdb' –
我對它並不陌生我只需要離問題所在的地方近一步 – user3085931
瞧!你剛纔問了世界上的調試器。 – therainmaker
你怎麼知道如何使用'debugging'標籤,但你從來沒有聽說過調試? – user463035818
如果堆棧溢出自動將「調試」標籤放在那裏,那麼它就是圖靈測試的候選者。如果沒有,那麼你的問題就是修辭。 – Bathsheba