From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.help Subject: Re: How to debug function that uses macros Date: Sun, 26 Feb 2017 23:36:00 -0500 Message-ID: References: <20170226102029.34afee15@gauss> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: blaine.gmane.org 1488170202 8267 195.159.176.226 (27 Feb 2017 04:36:42 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Mon, 27 Feb 2017 04:36:42 +0000 (UTC) User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Mon Feb 27 05:36:37 2017 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ciD36-0001Zn-KT for geh-help-gnu-emacs@m.gmane.org; Mon, 27 Feb 2017 05:36:36 +0100 Original-Received: from localhost ([::1]:50264 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ciD3C-0002IP-Ow for geh-help-gnu-emacs@m.gmane.org; Sun, 26 Feb 2017 23:36:42 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56664) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ciD2k-0002IG-Sz for help-gnu-emacs@gnu.org; Sun, 26 Feb 2017 23:36:15 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ciD2h-0002pf-Pt for help-gnu-emacs@gnu.org; Sun, 26 Feb 2017 23:36:14 -0500 Original-Received: from [195.159.176.226] (port=48225 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1ciD2h-0002oI-K6 for help-gnu-emacs@gnu.org; Sun, 26 Feb 2017 23:36:11 -0500 Original-Received: from list by blaine.gmane.org with local (Exim 4.84_2) (envelope-from ) id 1ciD2X-0006nW-1u for help-gnu-emacs@gnu.org; Mon, 27 Feb 2017 05:36:01 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 37 Original-X-Complaints-To: usenet@blaine.gmane.org Cancel-Lock: sha1:FnLSajJOJ1/tw9NDSn6db9crtCs= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.org gmane.emacs.help:112387 Archived-At: > How do I debug, using edebug, a function that uses macros? > I want to step through the macro expansion. Depends where the expanded code comes from. If it comes from the macro call itself, then you'll want to add a debug declaration to the macro, to explain which parts of the macro's arguments are expressions. Something like (defmacro foo (bar baz) (declare (debug (symbolp form))) ...) If the expanded code you want to step through comes from the macro itself, then you can try to use edebug-` instead of the normal `, such as: (defmacro foo (bar baz) (declare (debug (symbolp form))) (edebug-\` (let ((,bar (something))) ,baz))) > The obvious way to do this is to first create the fully > expanded function, then use edebug on that. Maybe there > is a better way, but that should work. But how do I > create the fully expanded function? Neither macroexpand > nor macroexpand-all do anything useful here that I can tell. > For example > > (macroexpand-all '(my-function)) > > just displays (my-function). Only if `my-function` is a function, in which case indeed there's nothing to expand. Stefan