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