Linux中腳本執行遇到錯誤時,一般都會打印錯誤及錯誤所在的行號。有的錯誤提示能望文知義,有的描述不是能夠知其所以然,還有的錯誤是前面的過程導致了錯誤的發生。如何能快速發現代碼中的錯誤?Linux中腳本調試并沒有特定的工具,在windows平臺上可以借助visual studio來調試vbscript腳本,也希望不久以后linux中也有類似的腳本調試工具。如果已經有了,希望能告訴我。下面總結一下我常用到的調試方法。
1:打印程序日志的方法,這種方法在各種語言的程序中都被廣為應用。我們可以用print 和 echo等輸出語句。如果希望調試日志在運行不出現,可以寫個類似的函數。
debug_info()
{
if [ "$DEBUG" = "true" ]
then
$@
fi
}
2:在調用shell腳本是加上命令行選項或者是利用set命令。
比如在 sh -n 腳本文件名 或者 set -o noexec 縮寫是set -n 表示只檢查語法不執行。
sh -v 腳本文件名 或者 set -o verbose 縮寫是set -n 表示在命令執行前顯示。
sh -x 腳本文件名 或者 set -o xtrace 縮寫是set -x 表示在命令執行后顯示。
sh -u 腳本文件名 或者 set -o nounset 縮寫是set -u 如果出現了未定義的變量就給出錯誤消息。
3:使用用trap命令來執行錯誤和調試信號的輸出
trap [命令,函數,語句] 信號[ERR,DEBUG...]
例如:
ERRPRINT()


{
echo "LINE:$1 command of function exit with $?"
}
trap 'ERRPRINT $LNENO' ERR
abc
good