Bram Moolenaar | f1f60f8 | 2016-01-16 15:40:53 +0100 | [diff] [blame^] | 1 | Tests for backtrace debug commands. vim: set ft=vim : |
| 2 | |
| 3 | STARTTEST |
| 4 | :so small.vim |
| 5 | :function! Foo() |
| 6 | : let var1 = 1 |
| 7 | : let var2 = Bar(var1) + 9 |
| 8 | : return var2 |
| 9 | :endfunction |
| 10 | : |
| 11 | :function! Bar(var) |
| 12 | : let var1 = 2 + a:var |
| 13 | : let var2 = Bazz(var1) + 4 |
| 14 | : return var2 |
| 15 | :endfunction |
| 16 | : |
| 17 | :function! Bazz(var) |
| 18 | : let var1 = 3 + a:var |
| 19 | : let var3 = "another var" |
| 20 | : return var1 |
| 21 | :endfunction |
| 22 | :new |
| 23 | :debuggreedy |
| 24 | :redir => out |
| 25 | :debug echo Foo() |
| 26 | step |
| 27 | step |
| 28 | step |
| 29 | step |
| 30 | step |
| 31 | step |
| 32 | echo "- show backtrace:\n" |
| 33 | backtrace |
| 34 | echo "\nshow variables on different levels:\n" |
| 35 | echo var1 |
| 36 | up |
| 37 | back |
| 38 | echo var1 |
| 39 | u |
| 40 | bt |
| 41 | echo var1 |
| 42 | echo "\n- undefined vars:\n" |
| 43 | step |
| 44 | frame 2 |
| 45 | echo "undefined var3 on former level:" |
| 46 | echo var3 |
| 47 | fr 0 |
| 48 | echo "here var3 is defined with \"another var\":" |
| 49 | echo var3 |
| 50 | step |
| 51 | step |
| 52 | step |
| 53 | up |
| 54 | echo "\nundefined var2 on former level" |
| 55 | echo var2 |
| 56 | down |
| 57 | echo "here var2 is defined with 10:" |
| 58 | echo var2 |
| 59 | echo "\n- backtrace movements:\n" |
| 60 | b |
| 61 | echo "\nnext command cannot go down, we are on bottom\n" |
| 62 | down |
| 63 | up |
| 64 | echo "\nnext command cannot go up, we are on top\n" |
| 65 | up |
| 66 | b |
| 67 | echo "fil is not frame or finish, it is file" |
| 68 | fil |
| 69 | echo "\n- relative backtrace movement\n" |
| 70 | fr -1 |
| 71 | frame |
| 72 | fra +1 |
| 73 | fram |
| 74 | echo "\n- go beyond limits does not crash\n" |
| 75 | fr 100 |
| 76 | fra |
| 77 | frame -40 |
| 78 | fram |
| 79 | echo "\n- final result 19:" |
| 80 | cont |
| 81 | :0debuggreedy |
| 82 | :redir END |
| 83 | :$put =out |
| 84 | :w! test.out |
| 85 | :qa! |
| 86 | ENDTEST |
| 87 | |