3 ms·
If you're using ZSH, this will give you a Python-style backtrace showing the specific line of each failure, even with nested function calls. https://gist.githu
by ebeip90 5y ago
If you're using ZSH, this will give you a Python-style backtrace showing the specific line of each failure, even with nested function calls.
https://gist.github.com/zachriggle/8574964d2e3078cdfae84b5744a9d4dc https://gist.github.com/zachriggle/8574964d2e3078cdfae84b574...
e.g.
An error occurred on ./test:18
Frame 1 (./test:21)
18 false
19 }
20
21 >>> a
Frame 2 (./test:6)
3 source TRAPERR.zsh
4
5 a() {
6 >>> b
7 }
8
9 b() {
Frame 3 (./test:10)
7 }
8
9 b() {
10 >>> c
11 }
12
13 c() {
Frame 4 (./test:14)
11 }
12
13 c() {
14 >>> d
15 }
16
17 d() {
Frame 5 (./test:18)
15 }
16
17 d() {
18 >>> false
19 }
20
21 a
- drran 5y agoI can do this in bash too (partially), with `set -eE` and bash-modules: #!/bin/bash . import.sh strict log a() { b } b() { c } c() { d } d() { false } a Result: $ ./test.sh [test.sh] PANIC: Uncaught error. at d(./test.sh:13) at c(./test.sh:10) at b(./test.sh:7) at a(./test.sh:4) at main(./test.sh:16) However, it stops to work at some point, e.g. in `for` loop, or in a subshell. zsh is better in this regard.