Re: Debugger : Can't see local variables when stepping
Jérôme Radix <[email protected]>
| Newsgroups | gmane.lisp.steel-bank.general |
|---|---|
| Message-ID | <CAAyNt77tAFEF_BUyvoCQsxTS0w-PxGrEQFQm7Eh4YyzHq11KPg@mail.gmail.com> |
Hello Jacek, On Emacs, when I only put a (BREAK) at the start of the FOO function, and then step through the function, I press 'i' and use the '*' wildcard to see all available variables : I can't see the local variables VAR2 or I even when I'm inside the DO loop. I would be grateful if you could make a Youtube video on that, showing how with only a (BREAK) at the start of the function, you can step through code and see all local variables declared after the (BREAK). Regards, Jérôme. Le ven. 22 mars 2024 à 02:48, Jacek Podkanski <[email protected]> a écrit : > I have a crude solution to this problem. Please contact me to discuss my > Emacs solution. > > I may need to prepare a Youtube video. > > When I do step debugging, I can press i for inspecting with a default > value that Emacs thinks I want to inspect. I can edit that, so I clear the > whole value, type* and press Tab. That gives me autocompletion of all the > global variables; I can pick the one I want and inspect it. > > On Mon, 18 Mar 2024 at 12:54, Jérôme Radix <[email protected]> wrote: > >> Thanks Martin. >> >> It works when using (BREAK) after declaring local variables. >> But does that mean that stepping through code using the debugger can't >> show new local variables declared after (BREAK) ? >> How can I have my local variables automatically detected/shown when >> stepping through code using the debugger, like in other languages debuggers? >> >> Regards, >> Jérôme. >> >> >> Le lun. 18 mars 2024 à 11:25, eMko <[email protected]> a écrit : >> >>> Hi, >>> >>> if you put `(break)` into the `let` form, you will be able to see the >>> variable (tested with SBCL 2.4.1 on Windows, the Roswell build). >>> >>> (defun foo (var1) >>> (let ((var2 (subseq var1 0 10))) >>> (break) >>> (dotimes (i 10 (fresh-line)) >>> (format t "~C" (char var2 i))))) >>> >>> SLY: >>> >>> break >>> [Condition of type SIMPLE-CONDITION] >>> >>> Restarts: >>> 0: [CONTINUE] Return from BREAK. >>> 1: [RETRY] Retry SLY mREPL evaluation request. >>> 2: [*ABORT] Return to SLY's top level. >>> 3: [ABORT] abort thread (#<THREAD "sly-channel-1-mrepl-remote-1" >>> RUNNING {1001160003}>) >>> >>> Backtrace: >>> 0: (FOO "hello world") >>> Locals: >>> VAR1 = "hello world" >>> VAR2 = "hello worl" >>> >>> Hope that helps. >>> >>> Martin >>> >>> On Mon, Mar 18, 2024 at 10:25 AM Jérôme Radix <[email protected]> >>> wrote: >>> >>>> Hello, >>>> >>>> When using the debugger, I can't figure out how to see the value of I >>>> and VAR2 in my little test code, even with (debug 3) optimization setting: >>>> (defun foo (var1) >>>> (break) >>>> (let ((var2 (subseq var1 0 10))) >>>> (dotimes (i 10 (fresh-line)) >>>> (format t "~C" (char var2 i))))) >>>> >>>> (foo "Hello World") >>>> >>>> Here is the transcript of my session, on linux >>>> 5.15.146.1-microsoft-standard-WSL2: >>>> >>>> $ sbcl --no-sysinit --no-userinit >>>> This is SBCL 2.3.4, an implementation of ANSI Common Lisp. >>>> More information about SBCL is available at <http://www.sbcl.org/>. >>>> >>>> SBCL is free software, provided as is, with absolutely no warranty. >>>> It is mostly in the public domain; some portions are provided under >>>> BSD-style licenses. See the CREDITS and COPYING files in the >>>> distribution for more information. >>>> * (declaim (optimize (debug 3))) >>>> NIL >>>> * (sb-ext:describe-compiler-policy) >>>> Basic qualities: >>>> COMPILATION-SPEED = 1 >>>> DEBUG = 3 >>>> SAFETY = 1 >>>> SPACE = 1 >>>> SPEED = 1 >>>> INHIBIT-WARNINGS = 1 >>>> Dependent qualities: >>>> SB-C::CHECK-CONSTANT-MODIFICATION = 1 -> 1 (maybe) >>>> SB-C::TYPE-CHECK = 1 -> 3 (full) >>>> SB-C::LET-CONVERSION = 1 -> 0 (off) >>>> SB-C:ALIEN-FUNCALL-SAVES-FP-AND-PC = 1 -> 3 (yes) >>>> SB-C:VERIFY-ARG-COUNT = 1 -> 3 (yes) >>>> SB-C::INSERT-DEBUG-CATCH = 1 -> 3 (yes) >>>> SB-C::RECOGNIZE-SELF-CALLS = 1 -> 0 (no) >>>> SB-C::FLOAT-ACCURACY = 1 -> 3 (full) >>>> SB-C:INSERT-STEP-CONDITIONS = 1 -> 3 (full) >>>> SB-C::COMPUTE-DEBUG-FUN = 1 -> 3 (yes) >>>> SB-C:STORE-SOURCE-FORM = 1 -> 3 (yes) >>>> SB-C::PRESERVE-SINGLE-USE-DEBUG-VARIABLES = 1 -> 3 (yes) >>>> SB-C::PRESERVE-CONSTANTS = 1 -> 0 (no) >>>> SB-C:INSERT-ARRAY-BOUNDS-CHECKS = 1 -> 3 (yes) >>>> SB-C::AREF-TRAPPING = 1 -> 0 (no) >>>> SB-C::STORE-XREF-DATA = 1 -> 3 (yes) >>>> SB-C:STORE-COVERAGE-DATA = 1 -> 0 (no) >>>> SB-C:INSTRUMENT-CONSING = 1 -> 1 (no) >>>> SB-C::STORE-CLOSURE-DEBUG-POINTER = 1 -> 0 (no) >>>> * (defun foo (var1) >>>> (break) >>>> (let ((var2 (subseq var1 0 10))) >>>> (dotimes (i 10 (fresh-line)) >>>> (format t "~C" (char var2 i))))) >>>> FOO >>>> * (foo "Hello World") >>>> >>>> debugger invoked on a SIMPLE-CONDITION in thread >>>> #<THREAD tid=1590 "main thread" RUNNING {1001090003}>: >>>> break >>>> >>>> Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL. >>>> >>>> restarts (invokable by number or by possibly-abbreviated name): >>>> 0: [CONTINUE] Return from BREAK. >>>> 1: [ABORT ] Exit debugger, returning to top level. >>>> >>>> (FOO "Hello World") >>>> source: (BREAK) >>>> 0] start >>>> ; Evaluating call: >>>> ; (SUBSEQ VAR1 0 10) >>>> ; With arguments: >>>> ; "Hello World" >>>> ; 0 >>>> ; 10 >>>> >>>> 1] step >>>> ; (SUBSEQ VAR1 0 10) => "Hello Worl" >>>> ; Evaluating call: >>>> ; (+ I 1) >>>> ; With unknown arguments >>>> H >>>> 0] step >>>> ; Evaluating call: >>>> ; (+ I 1) >>>> ; With unknown arguments >>>> e >>>> 0] L >>>> VAR1 = "Hello World" >>>> >>>> ==> I want to see the value of I and VAR2. What am I doing wrong ? >>>> I've tried several combinations of (declaim (optimize (debug 3) (space >>>> 0) (safety 3) (speed 0))) with no difference in behavior. >>>> >>>> Thanks for your help. >>>> >>>> Regards, >>>> Jérôme. >>>> _______________________________________________ >>>> Sbcl-help mailing list >>>> [email protected] >>>> https://lists.sourceforge.net/lists/listinfo/sbcl-help >>>> >>> _______________________________________________ >> Sbcl-help mailing list >> [email protected] >> https://lists.sourceforge.net/lists/listinfo/sbcl-help >> > _______________________________________________ Sbcl-help mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/sbcl-help