File: D1349.debug-trace.sh

package info (click to toggle)
ble.sh 0.4.0~git20250321.d4c812b-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 12,516 kB
  • sloc: sh: 71,367; awk: 1,316; cpp: 750; ansic: 186; javascript: 43; makefile: 35
file content (99 lines) | stat: -rw-r--r-- 1,789 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#!/bin/bash

function check1 {
  function f1 {
    local i
    for ((i=0;i<10;i++)); do
      ((i==0)) && continue
      ((i==1)) && break
    done
    return 1
  }
  function f2 {
    echo f2:BEGIN
    f1
    echo f2:END
  }

  trap 'echo "\$ $BASH_COMMAND"' DEBUG

  # trace 属性のない場合
  f2

  # 内側の関数のみ trace 属性のある場合
  declare -ft f1
  f2

  # 外側・内側の関数に trace 属性の在る場合
  declare -ft f1 f2
  f2
}

echo ------------------------------------------------------------------------------
echo check1
(check1)

function check2 {
  function f1 {
    echo '$ trap -p'
    trap -p
    echo '$ trap -p DEBUG'
    trap -p DEBUG
  }

  trap 'echo "\$ $BASH_COMMAND"' DEBUG
  echo '$ trap -p'
  trap -p
  echo '$ trap -p DEBUG'
  trap -p DEBUG
  f1
}

echo ------------------------------------------------------------------------------
echo check2
(check2)

function check3 {
  function f1 {
    trap 'echo "[DEBUG]"' DEBUG
  }
  function f2 {
    trap DEBUG
  }

  trap 'echo "\$ $BASH_COMMAND"' DEBUG
  f2
  f2
  f1
  f1
}
echo ------------------------------------------------------------------------------
echo check3
(check3)

function check4 {
  function f1 {
    echo hello1
    trap 'echo "\$ $BASH_COMMAND"' DEBUG
    echo hello2
  }
  trap 'echo "\$ $BASH_COMMAND"' DEBUG
  f1
}
echo ------------------------------------------------------------------------------
echo check4
(check4)

echo ------------------------------------------------------------------------------
function check5 {
  function trap-debug {
    echo "alpha:$BASH_COMMAND"
    trap 'echo "DEBUG:DEBUG $BASH_COMMAND"' DEBUG
    trap -p DEBUG
    echo "beta:$BASH_COMMAND"
  }
  trap 'echo A; trap-debug; echo Z' DEBUG
  echo gamma
}
echo check5
(check5)