From a0a980e0ef832b978cd3b0c3c7d2550a944e264f Mon Sep 17 00:00:00 2001 From: Calvin Rose Date: Mon, 25 Nov 2019 18:21:53 -0600 Subject: [PATCH] Update sample debugger. Add .break and .step. --- examples/debugger.janet | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/examples/debugger.janet b/examples/debugger.janet index bb68b116..8e707c24 100644 --- a/examples/debugger.janet +++ b/examples/debugger.janet @@ -52,7 +52,6 @@ (def func (frame :function)) (disasm func)) - (defn .bytecode "Get the bytecode for the current function." [&opt n] @@ -113,10 +112,19 @@ (debug/unfbreak fun i)) (print "Cleared " (length bytecode) " breakpoints in " fun)) +(defn .break + "Set breakpoint at the current pc." + [] + (def frame (.frame)) + (def fun (frame :function)) + (def pc (frame :pc)) + (debug/fbreak fun pc) + (print "Set breakpoint in " fun " at pc=" pc)) + (defn .clear "Clear the current breakpoint" [] - (def frame (-> (.fiber) debug/stack first)) + (def frame (.frame)) (def fun (frame :function)) (def pc (frame :pc)) (debug/unfbreak fun pc) @@ -135,3 +143,11 @@ [&opt n] (.clear) (.next n)) + +(defn .step + "Execute the next n instructions." + [&opt n] + (var res nil) + (for i 0 (or n 1) + (set res (debug/step (.fiber)))) + res)