From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Re: Why is it so difficult to get a Lisp backtrace? Date: Sat, 25 Jun 2022 15:59:52 +0000 Message-ID: References: <87edzchi3d.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="8260"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Lars Ingebrigtsen Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sat Jun 25 18:03:14 2022 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1o58Fd-0001vK-R5 for ged-emacs-devel@m.gmane-mx.org; Sat, 25 Jun 2022 18:03:13 +0200 Original-Received: from localhost ([::1]:58638 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o58Fc-0000Qb-7t for ged-emacs-devel@m.gmane-mx.org; Sat, 25 Jun 2022 12:03:12 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o58CW-0005lh-KU for emacs-devel@gnu.org; Sat, 25 Jun 2022 12:00:00 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:58397 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1o58CR-0008DL-G1 for emacs-devel@gnu.org; Sat, 25 Jun 2022 12:00:00 -0400 Original-Received: (qmail 28713 invoked by uid 3782); 25 Jun 2022 15:59:53 -0000 Original-Received: from acm.muc.de (p4fe15baa.dip0.t-ipconnect.de [79.225.91.170]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Sat, 25 Jun 2022 17:59:52 +0200 Original-Received: (qmail 6428 invoked by uid 1000); 25 Jun 2022 15:59:52 -0000 Content-Disposition: inline In-Reply-To: <87edzchi3d.fsf@gnus.org> X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de Received-SPF: pass client-ip=193.149.48.1; envelope-from=acm@muc.de; helo=mail.muc.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, T_SCC_BODY_TEXT_LINE=-0.01, T_SPF_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:291618 Archived-At: Hello, Lars. On Sat, Jun 25, 2022 at 17:35:02 +0200, Lars Ingebrigtsen wrote: > Alan Mackenzie writes: > >> This third group of users is poorly catered for by the current > >> collection of mechanisms. See also bug #56201, with thanks to > >> Andreas and Lars who helped me get to the bottom of it. To be > >> reasonably sure of getting a backtrace, it seems one needs to do > >> all of the following: > >> (i) (setq debug-on-error t). > >> (ii) (setq debug-on-signal t). > >> (iii) Bind debug-ignored-errors to nil. > >> (iv) Pray. > You probably also need to ensure that inhibit-redisplay is nil at the > point of the error, I think? (At least I vaguely recall having to > remove some of those bindings to get a backtrace...) For example, by testing a flag in the backtrace function, and binding inhibit-redisplay to nil if that flag is set. This could get quite complicate quite quickly. Another thing I'd like to be able to do is get a backtrace when there's an error in font-locking during redisplay. That's a whole order of magnitude difference in complexity. > > I mean something like the following, which to a first approximation, > > works. To use it, do M-x debug-next-command and the execute the > > command expected to give errors: > I like it, but it may not be useful in all contexts -- errors are used > as a programming mechanism here and there (i.e., throwing an error > symbol to be caught by the caller), and you'll get backtraces from > these non-error errors, too, unfortunately. As I suggested in my reply to Stefan, maybe a C-u argument to the function could be used to exclude (or include) debug-on-signal from the mix. Or something like that. > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no -- Alan Mackenzie (Nuremberg, Germany).