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