2009-11-01 50 views
0

什麼是您通常花費在調試高級與低級錯誤上的時間比例?調試:高級與低級錯誤

爲了討論的目的,高級別的錯誤是不正確的算法,對輸入數據和/或操作環境的錯誤假設,在初始實現某些事物時被忽略的情況,忘記處理邊界條件/邊緣案例等。爲了討論的緣故,它們還可以包括糟糕的設計決定,這些決定會在代碼中引入限制,並且不太容易改變,儘管這是擴展了錯誤的定義。換句話說,高級別的錯誤是由於不是你應該具有的含義而導致的錯誤。

低級錯誤是類似於內存管理和損壞問題,不是由高級錯誤引起的空指針取消引用,通過編譯器的細微語法錯誤,在執行某些操作時出現錯誤的錯誤數組等。換句話說,它們是由於沒有編碼你的意思而造成的錯誤。

另外,爲了比較,您主要使用哪種語言以及您主要使用哪種類型的編程?

+0

我的道歉。但這可能會很快關閉「主觀和議論」 –

+0

@Ravi - Nah。不是爭辯。 –

+0

您的低級別和高級別錯誤的示例看起來與我相矛盾。例如,你提到一個未處理的邊界案例是一個高級錯誤,但是它們都是一個空指針異常和一個循環中的偏移錯誤,因爲它們是低級錯誤。我認爲這三者都是算法的邊緣情況,通常在規範中沒有具體提及,或者你稱之爲高級錯誤。通常都是由於開發人員未能正確測試而導致的。 – gooli

回答

1

通過您的定義,幾乎所有我看到的錯誤都是「高級別」錯誤。

我在C#中使用.net框架工作。該框架幾乎處理您定義爲低級錯誤的所有內容。

+0

這就是我正要說的。如果您將調試時間的2%以上分配爲「低級」錯誤,那麼可能是升級工具鏈的時候了! :) – Brian

0

低級錯誤通常僅由編譯器修復。因此,首先查看高級別錯誤,然後查看低級別錯誤(如果需要的話)。因爲嘗試構建建築物並考慮在牆上製作堅固的牆建設薄弱的基地完全沒用。

其有趣但真實。想想看。

+1

調試...哦,我記得我的問題.. http://stackoverflow.com/questions/1592457/how-to-debug-a-program-without-a-debugger –

0

如果我正確理解您的問題,您可以將錯誤分爲兩種類型 - 那些由編程實踐不佳造成的錯誤,以及由設計和規範中的問題導致的錯誤。假設我的理解確實是正確的,那麼我會說作爲一名開發人員,我會花更多的時間來追蹤低級別的錯誤,特別是如果難以複製(是的,該死的多線程錯誤只發生在生產中,我正在談論您!)。另一方面,設計和規範級錯誤通常會導致項目嚴重延遲,但更易於重現和定位代碼。

+0

但是,如果你去了什麼使用設計本身錯誤,或者你認爲算法錯誤? –

+0

在我最近工作的那種商業軟件中,有相當多的商業邏輯幾乎沒有意義。有時,當我試圖推斷邊緣案例中的行爲時,我認爲它是錯誤的 - 即不是人們想要的產品。這就是我的意思,而不是完全錯誤的設計。 – gooli