From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Joe Riel Newsgroups: gmane.emacs.help Subject: Re: How to debug function that uses macros Date: Tue, 28 Feb 2017 22:53:46 -0800 Message-ID: <20170228225346.34038e9c@gauss> References: <20170226102029.34afee15@gauss> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-Trace: blaine.gmane.org 1488351265 3887 195.159.176.226 (1 Mar 2017 06:54:25 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Wed, 1 Mar 2017 06:54:25 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Wed Mar 01 07:54:19 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 1ciy9P-0008UX-G1 for geh-help-gnu-emacs@m.gmane.org; Wed, 01 Mar 2017 07:54:15 +0100 Original-Received: from localhost ([::1]:38768 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ciy9V-0001HW-99 for geh-help-gnu-emacs@m.gmane.org; Wed, 01 Mar 2017 01:54:21 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:44381) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ciy95-0001HQ-7q for help-gnu-emacs@gnu.org; Wed, 01 Mar 2017 01:53:56 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ciy92-00071M-5G for help-gnu-emacs@gnu.org; Wed, 01 Mar 2017 01:53:55 -0500 Original-Received: from cdptpa-outbound-snat.email.rr.com ([107.14.166.227]:52761 helo=cdptpa-oedge-vip.email.rr.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1ciy92-00070c-0y for help-gnu-emacs@gnu.org; Wed, 01 Mar 2017 01:53:52 -0500 Original-Received: from [75.80.191.41] ([75.80.191.41:43417] helo=gauss) by cdptpa-omsmta02 (envelope-from ) (ecelerity 3.6.9.48312 r(Core:3.6.9.0)) with ESMTP id 95/FB-16480-AFF66B85; Wed, 01 Mar 2017 06:53:47 +0000 In-Reply-To: X-Mailer: Claws Mail 3.11.1 (GTK+ 2.24.25; x86_64-pc-linux-gnu) X-RR-Connecting-IP: 107.14.168.7:25 X-detected-operating-system: by eggs.gnu.org: BaiduSpider [fuzzy] X-Received-From: 107.14.166.227 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:112399 Archived-At: On Sun, 26 Feb 2017 23:36:00 -0500 Stefan Monnier wrote: > > 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))) I couldn't get that to do anything. Do I evaluate the macro (here foo) normally, then instrument the function that calls it? I tried doing that, but nothing changes when stepping through the function that includes the macro call. > > > 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 > > -- Joe Riel