3

I want to instrument a function so that edebug gets control when that point is reached. I can insert (edebug) in the code, however, unless the function is instrumented with edebug (C-u M-S-x), that will be interpreted as (debug), which I don't want. But if the function is instrumented with edebug, then a break occurs everytime the function is called, not just when the particular point in the function is reached. I only want the break to occur (and get control with edebug) when a particular place in the function is reached.

Stefan
  • 26,154
  • 3
  • 46
  • 84
JoeRiel
  • 31
  • 1

1 Answers1

4

Customize the user option C-hv edebug-initial-mode or use M-x edebug-set-initial-mode1 to set the value go instead of the default step.

In the absence of relevant breakpoints, an instrumented function will now simply run to completion without interruption.

Note that you can set breakpoints in an instrumented function with M-x edebug-set-breakpoint or M-x edebug-set-conditional-breakpoint, or using the C-xXC-h bindings, without the debugger being active at the time.


1 See C-hig (elisp)Edebug Execution Modes for the valid options.

In emacs-lisp-mode buffers (but not in the *scratch* buffer's lisp-interaction-mode, which seems like a bug) you also have the following GUD-style bindings available when edebug has been loaded:

C-x C-a C-c   edebug-go-mode
C-x C-a C-s   edebug-step-mode
C-x C-a C-n   edebug-next-mode
C-x C-a C-l   edebug-where

As well as this non-GUD binding under the same prefix:

C-x C-a RET   edebug-set-initial-mode

Hence:

  • C-xC-aRETg -- change initial mode to go.
  • C-xC-aRETSPC -- change initial mode to step.
phils
  • 48,657
  • 3
  • 76
  • 115