當前位置:
首頁 > 最新 > 小林教IDL§10 程序調試I

小林教IDL§10 程序調試I

有些人問怎麼調試程序,那我就把調試這一章提前到前面來講講吧。反正目前基本上初學者不多,最起碼都是入門了,直接跳到這一部分大家不會有太大的閱讀問題。

§10 程序調試

§ 10.1 錯誤的分類

要調試程序,首先需要知道我們究竟遇到了什麼錯誤。不同的錯誤的處理方法不太一樣。

通常,錯誤被分為語法錯誤、運行時錯誤、邏輯錯誤等幾個類型。不過從我自己的實踐經驗來說,我的分類更細一些:

以下描述中提到「過程」一詞的,指代「過程或函數」。

語法錯誤

凡是違反了基本的語法規則的,idl的編譯器無法正確解析的,就是語法錯誤。通常語法錯誤是最容易發現的,語法錯誤通常是在運行前編譯的時候就被發現了,而且語法錯誤也不存在什麼繼續執行的可能,因為idl根本不能理解你寫的。

比如,調用過程漏寫逗號,表達式括弧不匹配,等等。。。。

准語法錯誤

這是我自己新添的術語,用來表達那些符合語法,但是卻忽略了語法的特殊性導致的錯誤。

比如,需要保留商的小數部分時,用了兩個整數相除;直接對兩個來源不同的浮點數進行判斷;用、而不是、進行大小比較;等等。。。。

這類錯誤,編譯通常能過(偶爾也有用錯符號導致編譯器都通不過的),甚至運行時也能通過,但是通常結果不對。當然偶爾瞎貓碰到死耗子也能得出正確的結論……

在大部分書籍中,這樣的准語法錯誤,往往分類到邏輯錯誤中,不過我覺得它們完全可以作為另外一種語法錯誤,因為都是由於編程者對語法學習的錯誤引起的。

運行時錯誤

指那些能運行,但是運行中,報告出錯無法繼續運行。這一類錯誤,通常都是和表達式的取值有關,不過需要注意的是,有很多時候和數組的大小、維度也有關,不僅僅是值。

例如,把一個數除以0,下標越界等等。

外部錯誤

這是我從運行時錯誤中單獨抽取出來的一類錯誤,特指那些由於程序之外的因素引起的錯誤。我們處理數據,不可能只在程序內部,都需要進行文件操作,甚至外部設備操作,由這些引起的錯誤就是外部錯誤。

例如,要打開的文件不存在,要寫入的文件的目錄不存在或者許可權不對,fits文件損壞,讀文本文件時指定了錯誤的編碼,設定了錯誤的讀出列,等等

邏輯錯誤

邏輯錯誤是編程中的最大錯誤,也是我們實際上調試的主要目標。不過我一般把邏輯錯誤再分解為普通的邏輯錯誤,和物理意義錯誤。

普通的邏輯錯誤,就是傳統意義上的邏輯錯誤。邏輯錯誤的一大特徵就是程序通常可以正常運行結束,但是得不到我們想要的結果。

物理意義錯誤

簡單來說呢,這種錯誤就是寫的程序表達的物理模型、物理意義,和設想的不同。當然這邊不討論物理模型本身對不對的問題,那不是編程的事情……

認清了不同類型的錯誤,後面我們就可以逐個來解決。不過話說回來,物理意義錯誤,基本上我沒啥例子可以舉的。。。只能是大家在各個領域工作中去接觸。

歡迎大家提出建議和意見,指出錯誤。大家請直接留言,或者給我微信賬號發消息(私信或者群聊),謝謝。天文圈的圈友們可以直接在天文圈或者IDL群等找到我。

最後,版權聲明:本人保留本書的版權,歡迎收藏、發送,但是未經本人許可,不得轉載。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 小林在線 的精彩文章:

TAG:小林在線 |

您可能感興趣

S7-PLCSIM模擬軟體在線程序調試
GDB調試CVE-2018-5711 PHP-GD拒絕服務漏洞
DeepLab v2及調試過程
Stanford NLP 解讀 ACL 2018 論文——用於調試 NLP 模型的語義等價對立規則
用GDB調試PHP及反序列化小記
微軟PIX全面支持AMD顯卡,輕鬆調試和分析Direct3D 12圖形渲染性能
如何構造自己的iOS內核調試器?這裡有份MOSEC 2018劇透
2020見!Intel Xe獨顯晶元已完工:正全力調試軟體驅動
挖掘IntelliJ IDEA的調試功能
macOS內核調試介紹
WINDOWS系統開機慢的優化調試方法
VS2017的一些調試方法技巧
【網路研討會】介紹PVRStudio——首款支持在移動平台上進行GPU調試的IDE
是德科技推出首款 DDR5 和 LPDDR5 存儲器協議調試和驗證解決方案
HMD確認諾基亞9 PureView配置五攝:攝像頭還在調試
Python 調試器入門
UltraSoC嵌入式分析技術與Imperas虛擬平台聯手助力多核開發及調試
IntelliJ遠程調試詳解
Eclipse Debug 調試
Vivo NEX手機已完成5G網路調試,5G信號的標識就長這樣?