如何調試/跟踪 bash 函數?

如何調試/跟踪 bash 函數?

我有一個 bash 腳本myscript.sh,裡面有很多函數。要運行一個函數,我會寫

source myscript.sh; myfunction

如何調試這樣的功能?

答案1

只需在要調試的部分之前添加這些行即可。

set -v -x -e

並禁用它。

set +v +x +e

答案2

在腳本中啟用偵錯並使用functrace.

set -x
set -o functrace

答案3

您還應該能夠在 Bash 中使用:

$ set -xT

這使得函數追蹤和

$ set +xT

禁用。

另外,參考另一個發佈的答案,我不建議使用 -v 進行偵錯(詳細模式),除非您正在檢查腳本/shell 命令集的語法。有時有用的另一種(通用)解決方案是-n結合使用該選項-x。這將“運行”腳本/命令,而無需實際執行運行命令的最後一步。這通常可以讓您在 shell 擴充功能等中發現困難的錯誤,而不會造成不必要的混亂。

相關內容