| Tests for backtrace debug commands. vim: set ft=vim : |
| |
| STARTTEST |
| :so small.vim |
| :lang mess C |
| :function! Foo() |
| : let var1 = 1 |
| : let var2 = Bar(var1) + 9 |
| : return var2 |
| :endfunction |
| : |
| :function! Bar(var) |
| : let var1 = 2 + a:var |
| : let var2 = Bazz(var1) + 4 |
| : return var2 |
| :endfunction |
| : |
| :function! Bazz(var) |
| : let var1 = 3 + a:var |
| : let var3 = "another var" |
| : return var1 |
| :endfunction |
| :new |
| :debuggreedy |
| :redir => out |
| :debug echo Foo() |
| step |
| step |
| step |
| step |
| step |
| step |
| echo "- show backtrace:\n" |
| backtrace |
| echo "\nshow variables on different levels:\n" |
| echo var1 |
| up |
| back |
| echo var1 |
| u |
| bt |
| echo var1 |
| echo "\n- undefined vars:\n" |
| step |
| frame 2 |
| echo "undefined var3 on former level:" |
| echo var3 |
| fr 0 |
| echo "here var3 is defined with \"another var\":" |
| echo var3 |
| step |
| step |
| step |
| up |
| echo "\nundefined var2 on former level" |
| echo var2 |
| down |
| echo "here var2 is defined with 10:" |
| echo var2 |
| echo "\n- backtrace movements:\n" |
| b |
| echo "\nnext command cannot go down, we are on bottom\n" |
| down |
| up |
| echo "\nnext command cannot go up, we are on top\n" |
| up |
| b |
| echo "fil is not frame or finish, it is file" |
| fil |
| echo "\n- relative backtrace movement\n" |
| fr -1 |
| frame |
| fra +1 |
| fram |
| echo "\n- go beyond limits does not crash\n" |
| fr 100 |
| fra |
| frame -40 |
| fram |
| echo "\n- final result 19:" |
| cont |
| :0debuggreedy |
| :redir END |
| :$put =out |
| :w! test.out |
| :qa! |
| ENDTEST |
| |