all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: help-gnu-emacs@gnu.org
Subject: Re: debugging Emacs LISP functions
Date: Wed, 01 Mar 2017 09:01:34 -0500	[thread overview]
Message-ID: <jwva895yuf4.fsf-monnier+gmane.emacs.help@gnu.org> (raw)
In-Reply-To: 20170301121427.GA3290@workstation

> I have a problem with Emacs. Basically it doesn't do what I want it to do :-)

That's only because you haven't yet realized that it's exactly what you
want it to do.

> emacs-devel mailing list. I don't know. With free software you just
> loose the difference between a "user" and a "developer".

As Emacs contributor&maintainer I've always tried hard to blur this
distinction as much as possible, indeed.

> When I try to debug LISP code that is part of Emacs I see with some functions
> I get the source code and with others I just get "byte-code".  In the latter
> case I can't debug it because the debugger just skips the whole function.
> How can I know what functions appear as "byte-code" in the debugger?
> And how can I debug them?

[ By "the debugger" I assume you mean the debugger that pops the
  *Backtrace* buffer, as opposed to the Edebug debugger you get by
  instrumenting code with C-u C-M-x.  ]

Normally, most of the Elisp functions are byte-compiled, so you don't
get to see much of their internals in the backtrace (and when you do see
their internals, you'd rather they had been hidden).  In order to see
details from a function, you'll then need to redefine the function in
its non-byte-compiled form.  Usually the best way to do that is:
- click on the function-name which should hopefully be a link to the
  function's definition.
- hit C-M-x from within the body of that definition, to redefine the function.

Then you can re-trigger the bug, which should get you back to the
backtrace but with more details of where you are within that function,
such that you can now use `e` from the various levels of stack to
investigate the value of the various variables.


        Stefan




  parent reply	other threads:[~2017-03-01 14:01 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-01 12:14 debugging Emacs LISP functions hector
2017-03-01 12:30 ` chaouche yacine
2017-03-01 14:01 ` Stefan Monnier [this message]
2017-03-01 17:33 ` John Valente
2017-03-01 18:31   ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwva895yuf4.fsf-monnier+gmane.emacs.help@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.