1、檢查語法-n
選項只做語法檢查,而不執行指令碼。
sh -n script_name.sh
2、啟動除錯
sh -x script_name.sh
進入除錯模式後,shell依次執行讀入的語句,產生的輸出中有的帶加號,有的不帶,如下。帶加號表示該條語句是shell執行的。不帶加號表示該語句是shell產生的輸出。
+ array=(123
45)+ for i in'$'
+ echo 1
13、中斷除錯
在除錯過程中可以按ctrl + z中斷除錯,觀察結果,然後再按fg鍵繼續除錯即可。
4、除錯**塊
上面的-x選項是除錯整個指令碼的,如果指令碼很大,會很不方便,還有一種方法是除錯某一塊**的,如下
set -x
...code block
...set +x
這樣,只對set -x與set +x之間的**進行跟蹤。
5、除錯函式
set -x
function call
set +x
6、常見錯誤診斷
***.sh: cannot shift
這種錯誤一般是引數傳遞有誤,比如沒有給引數,或者引數個數少了。因為shell指令碼使用shift來獲取下乙個引數,如果個數不對,shift命令就會失敗。
***.sh: ^m: not found
^m是windows上的回車符\r在unix上的顯示形式。這種情況多半是在windows上編輯了shell指令碼,然後拿到unix/linux上執行。只要將檔案中所有的\r刪除即可。
tr -d"\r"newfile.sh
或者乙個更標準的方法,因為\r的ascii碼是\015,所以可以這樣。
tr -d"\015"< oldfile.sh > newfile.sh
GDB除錯手冊
linux 包含了乙個叫gdb 的gnu 除錯程式。gdb 是乙個用來除錯c和c 程式的強力偵錯程式。它使你能在程式執行時觀察程式的內部結構和記憶體的使用情況。以下是 gdb 所提供的一些功能 它使你能監視你程式中變數的值 它使你能設定斷點以使程式在指定的 行上停止執行 它使你能一行行的執行你的 在...
gdb除錯手冊
gdb原理 利用作業系統提供的系統呼叫ptrace。詳情請看。gdb進行除錯的程序建議編譯引數新增 g 並去掉strip g3可在gdb列印巨集 儲存與恢復斷點 設定每步都列印的內容 gdb p ps ef grep worker grep v grep awk x a.txt 檔案內容 b rec...
gdb除錯手記
記錄一些gdb的使用經驗 假裝現在要除錯的二進位制程式叫a.exe,原始檔叫pleasedebugme.c 直接輸入gdb a.exe或者開啟gdb之後輸入file a.exe 首先用gcc g 編譯c c 程式時一定要加上 g選項,which means 加上除錯資訊,就像gcc g please...