From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lars Magne Ingebrigtsen Newsgroups: gmane.emacs.devel Subject: Re: Random idea: Debugging `quit' Date: Sun, 11 Sep 2011 23:01:12 +0200 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: dough.gmane.org 1315775077 4687 80.91.229.12 (11 Sep 2011 21:04:37 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sun, 11 Sep 2011 21:04:37 +0000 (UTC) Cc: emacs-devel@gnu.org To: Helmut Eller Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Sep 11 23:04:28 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1R2rCV-0003CQ-Oa for ged-emacs-devel@m.gmane.org; Sun, 11 Sep 2011 23:04:27 +0200 Original-Received: from localhost ([::1]:55632 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R2rCV-0005lY-9j for ged-emacs-devel@m.gmane.org; Sun, 11 Sep 2011 17:04:27 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:34206) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R2rCS-0005lC-9L for emacs-devel@gnu.org; Sun, 11 Sep 2011 17:04:25 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1R2rCQ-0004zb-St for emacs-devel@gnu.org; Sun, 11 Sep 2011 17:04:24 -0400 Original-Received: from hermes.netfonds.no ([80.91.224.195]:35685) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1R2rCQ-0004zV-Kf for emacs-devel@gnu.org; Sun, 11 Sep 2011 17:04:22 -0400 Original-Received: from cm-84.215.51.58.getinternet.no ([84.215.51.58] helo=stories.gnus.org) by hermes.netfonds.no with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1R2rCJ-0000iO-Sw; Sun, 11 Sep 2011 23:04:15 +0200 In-Reply-To: (Helmut Eller's message of "Sun, 11 Sep 2011 18:51:58 +0200") User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.50 (gnu/linux) Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAD1BMVEURCAYtFhENBAOIYEkZ DAq/LWcbAAACU0lEQVQ4jU1UgZEjIQzz8hSwPlwA8VNAOK4AzLv/ml6G7M/vTDYZBJYsi9DA03kM cfYyEjMnK1ihcZ6fu7tbTxcQLLs9ALNlr0spdotnf4DRRWuaFw8hE/MHwD4nrVz4s/4BQM7kxux5 f7ELHYL4MM88KccPsDwAO0tSSgeQU6r3Mt4vwaoTEerg2XL76KX/fNWcbw8A++30UTrzO9XLfJJ7 QavOaChI5GKql0QRRt9xgndz6/f4brEsHKLDEgPzkPRrfF+yeXcXxuC6Rp/pz/jJBo8o7xMA8v1C EwB6C+4AcAocDajYglkNPgFw2abQuiFcJiQ0kUQ0Hdq5d5BjFLIKfvoEQLEdDYP8i20mlAJBlGIJ twZlaagFYMxF5Pm4C46KFLAogBvrx/buhamZfE68c96lNgWTviomFCfeMWm4i+0FpRJkyKpFooUj apTgIBzgr5bqqgAyWSmH/A7TVtN8UzsM3DegeNlCct6qpM3CodhLIHZX1fKuWhW2mPkBFqIEgL/x 0sjm6ZFUa0sP8DrKojrkoQUkqgCohjBkx0gQOCh0RC2PnyhVA/CdxNQy3mpDcmqOe+AxJywZRiQz YXy8HQFLTP1ElG9VhD9avikmHsAVwFIMZVINryJBEep9BRY6lj3YKLUfGrirPWlEJADMF3EM4DiG MWKACu3knxOKspZjjHChRnweAF0tmBGCHoYtF15fMhXGTezPMMTNt6qZIDsmunPl/0q5vgrv1Pyn FcLoT8iSXQrMB8B9iHve8c9j+9bPDzVuzvPPsAPw2b33+F/1LZm4i8hwSgAAAABJRU5ErkJggg== X-Now-Playing: Scout Niblett's _This Fool Can Die Now_: "River Of No Return" X-MailScanner-ID: 1R2rCJ-0000iO-Sw MailScanner-NULL-Check: 1316379856.2006@y4MZNZw8vB8Lt6OUemtdIg X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.224.195 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 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.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:143900 Archived-At: Helmut Eller writes: > Not so nice, but kill -SIGUSR2 in shell tells Emacs to > enter the debugger. I didn't know that. That sounds useful. > Another possibility would be to set debug-on-quit permanently to t > and at the same time set the variable debugger to some function > that is smart enough to look at the queued events: > > (require 'cl) > (require 'debug) ; load it now to avoid resetting debugger > (setq debug-on-quit t) > (setq debugger 'my-debug) > (defun my-debug (&rest args) > (cond ((equal args '(error (quit))) > (let ((unread-events (loop while (input-pending-p) > collect (read-event nil nil 0.1)))) > (cond ((equal (subseq unread-events -4) > '(21 54 54 54)) ; C-u 6 6 6 > (debug nil 'my-break)) > (t > (discard-input) > (let ((debug-on-quit nil)) > (signal 'quit nil)))))) > (t > (apply #'debug args)))) That works great! Thanks! It's now in my .emacs. I think Emacs 24.2 should have something along these lines switched on by default. I think it would make a lot of bug reporting easier, since it would enable users to get a backtrace on hangs very easily. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/