annotate lisp/gud.el @ 18768:76978dc14d8c

(TAGS, tags): Include new lisp subdirectories.
author Richard M. Stallman <rms@gnu.org>
date Sun, 13 Jul 1997 20:48:21 +0000
parents 10b2526db6f0
children 3187940bd6b2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16250
aaa0ecdc4772 (gud-display-line): Don't call display-buffer
Richard M. Stallman <rms@gnu.org>
parents: 16185
diff changeset
1 ;;; gud.el --- Grand Unified Debugger mode for gdb, dbx, etc. under Emacs
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
2
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
3 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
4818
15dd7db2ab6c Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 4732
diff changeset
4 ;; Maintainer: FSF
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
5 ;; Keywords: unix, tools
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
6
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
7 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996 Free Software Foundation, Inc.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
8
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; any later version.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; GNU General Public License for more details.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13797
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13797
diff changeset
23 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 13797
diff changeset
24 ;; Boston, MA 02111-1307, USA.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
26 ;;; Commentary:
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
27
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28 ;; The ancestral gdb.el was by W. Schelter <wfs@rascal.ics.utexas.edu>
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
29 ;; It was later rewritten by rms. Some ideas were due to Masanobu.
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
30 ;; Grand Unification (sdb/dbx support) by Eric S. Raymond <esr@thyrsus.com>
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;; The overloading code was then rewritten by Barry Warsaw <bwarsaw@cen.com>,
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
32 ;; who also hacked the mode to use comint.el. Shane Hartman <shane@spr.com>
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
33 ;; added support for xdb (HPUX debugger). Rick Sladkey <jrs@world.std.com>
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
34 ;; wrote the GDB command completion code. Dave Love <d.love@dl.ac.uk>
10217
d112e49af18b (gdb): Correct tbreak doc string.
Richard M. Stallman <rms@gnu.org>
parents: 10203
diff changeset
35 ;; added the IRIX kluge, re-implemented the Mips-ish variant and added
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
36 ;; a menu. Brian D. Carlstrom <bdc@ai.mit.edu> combined the IRIX kluge with
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
37 ;; the gud-xdb-directories hack producing gud-dbx-directories.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
38
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
39 ;;; Code:
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
40
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
41 (require 'comint)
923
9f3cc03dae67 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 914
diff changeset
42 (require 'etags)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
43
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
44 ;; ======================================================================
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
45 ;; GUD commands must be visible in C buffers visited by GUD
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
46
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
47 (defgroup gud nil
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
48 "Grand Unified Debugger mode for gdb, sdb, dbx, or xdb under Emacs."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
49 :group 'unix
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
50 :group 'tools)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
51
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
52
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
53 (defcustom gud-key-prefix "\C-x\C-a"
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
54 "Prefix of all GUD commands valid in C buffers."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
55 :type 'string
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
56 :group 'gud)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
57
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
58 (global-set-key (concat gud-key-prefix "\C-l") 'gud-refresh)
7741
347191d7ca7d Use ctl-x-map to bind C-x SPC.
Richard M. Stallman <rms@gnu.org>
parents: 7461
diff changeset
59 (define-key ctl-x-map " " 'gud-break) ;; backward compatibility hack
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
60
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
61 (defvar gud-marker-filter nil)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
62 (put 'gud-marker-filter 'permanent-local t)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
63 (defvar gud-find-file nil)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
64 (put 'gud-find-file 'permanent-local t)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
66 (defun gud-marker-filter (&rest args)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
67 (apply gud-marker-filter args))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
69 (defun gud-find-file (file)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
70 ;; Don't get confused by double slashes in the name that comes from GDB.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
71 (while (string-match "//+" file)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
72 (setq file (replace-match "/" t t file)))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
73 (funcall gud-find-file file))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
74
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
75 ;; Keymap definitions for menu bar entries common to all debuggers and
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
76 ;; slots for debugger-dependent ones in sensible places. (Defined here
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
77 ;; before use.)
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
78 (defvar gud-menu-map (make-sparse-keymap "Gud") nil)
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
79 (define-key gud-menu-map [refresh] '("Refresh" . gud-refresh))
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
80 (define-key gud-menu-map [remove] '("Remove Breakpoint" . gud-remove))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
81 (define-key gud-menu-map [tbreak] nil) ; gdb, sdb and xdb
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
82 (define-key gud-menu-map [break] '("Set Breakpoint" . gud-break))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
83 (define-key gud-menu-map [up] nil) ; gdb, dbx, and xdb
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
84 (define-key gud-menu-map [down] nil) ; gdb, dbx, and xdb
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
85 (define-key gud-menu-map [print] '("Print Expression" . gud-print))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
86 (define-key gud-menu-map [finish] nil) ; gdb or xdb
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
87 (define-key gud-menu-map [stepi] '("Step Instruction" . gud-stepi))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
88 (define-key gud-menu-map [step] '("Step Line" . gud-step))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
89 (define-key gud-menu-map [next] '("Next Line" . gud-next))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
90 (define-key gud-menu-map [cont] '("Continue" . gud-cont))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
91
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
92 ;; ======================================================================
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
93 ;; command definition
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
94
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
95 ;; This macro is used below to define some basic debugger interface commands.
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
96 ;; Of course you may use `gud-def' with any other debugger command, including
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
97 ;; user defined ones.
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
98
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
99 ;; A macro call like (gud-def FUNC NAME KEY DOC) expands to a form
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
100 ;; which defines FUNC to send the command NAME to the debugger, gives
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
101 ;; it the docstring DOC, and binds that function to KEY in the GUD
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
102 ;; major mode. The function is also bound in the global keymap with the
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
103 ;; GUD prefix.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
104
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
105 (defmacro gud-def (func cmd key &optional doc)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
106 "Define FUNC to be a command sending STR and bound to KEY, with
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
107 optional doc string DOC. Certain %-escapes in the string arguments
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
108 are interpreted specially if present. These are:
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
109
4344
be116c77da2f (dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents: 4335
diff changeset
110 %f name (without directory) of current source file.
be116c77da2f (dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents: 4335
diff changeset
111 %d directory of current source file.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
112 %l number of current source line
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
113 %e text of the C lvalue or function-call expression surrounding point.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
114 %a text of the hexadecimal address surrounding point
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
115 %p prefix argument to the command (if any) as a number
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
116
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
117 The `current' source file is the file of the current buffer (if
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
118 we're in a C file) or the source file current at the last break or
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
119 step (if we're in the GUD buffer).
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
120 The `current' line is that of the current buffer (if we're in a
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
121 source file) or the source line number at the last break or step (if
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
122 we're in the GUD buffer)."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
123 (list 'progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
124 (list 'defun func '(arg)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
125 (or doc "")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
126 '(interactive "p")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
127 (list 'gud-call cmd 'arg))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
128 (if key
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
129 (list 'define-key
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
130 '(current-local-map)
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
131 (concat "\C-c" key)
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
132 (list 'quote func)))
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
133 (if key
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
134 (list 'global-set-key
3343
d5fde107dbe3 (gud-def): Don't use gud-key-prefix at compile time.
Richard M. Stallman <rms@gnu.org>
parents: 2960
diff changeset
135 (list 'concat 'gud-key-prefix key)
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
136 (list 'quote func)))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
137
1275
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
138 ;; Where gud-display-frame should put the debugging arrow. This is
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
139 ;; set by the marker-filter, which scans the debugger's output for
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
140 ;; indications of the current program counter.
1275
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
141 (defvar gud-last-frame nil)
68f025a5fdaa * gud.el (gud-last-frame): Added defvar for this.
Jim Blandy <jimb@redhat.com>
parents: 1274
diff changeset
142
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
143 ;; Used by gud-refresh, which should cause gud-display-frame to redisplay
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
144 ;; the last frame, even if it's been called before and gud-last-frame has
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
145 ;; been set to nil.
4335
907bf380e92e * gud.el (gud-last-last-frame): Specify initial value. `dbx'
Jim Blandy <jimb@redhat.com>
parents: 4298
diff changeset
146 (defvar gud-last-last-frame nil)
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
147
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
148 ;; All debugger-specific information is collected here.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
149 ;; Here's how it works, in case you ever need to add a debugger to the mode.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
150 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
151 ;; Each entry must define the following at startup:
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
152 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
153 ;;<name>
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
154 ;; comint-prompt-regexp
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
155 ;; gud-<name>-massage-args
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
156 ;; gud-<name>-marker-filter
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
157 ;; gud-<name>-find-file
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
158 ;;
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
159 ;; The job of the massage-args method is to modify the given list of
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
160 ;; debugger arguments before running the debugger.
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
161 ;;
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
162 ;; The job of the marker-filter method is to detect file/line markers in
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
163 ;; strings and set the global gud-last-frame to indicate what display
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
164 ;; action (if any) should be triggered by the marker. Note that only
3591
507f64624555 Apply typo patches from Paul Eggert.
Jim Blandy <jimb@redhat.com>
parents: 3551
diff changeset
165 ;; whatever the method *returns* is displayed in the buffer; thus, you
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
166 ;; can filter the debugger's output, interpreting some and passing on
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
167 ;; the rest.
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
168 ;;
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
169 ;; The job of the find-file method is to visit and return the buffer indicated
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
170 ;; by the car of gud-tag-frame. This may be a file name, a tag name, or
10217
d112e49af18b (gdb): Correct tbreak doc string.
Richard M. Stallman <rms@gnu.org>
parents: 10203
diff changeset
171 ;; something else. It would be good if it also copied the Gud menubar entry.
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
172
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
173 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
174 ;; gdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
175
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
176 ;;; History of argument lists passed to gdb.
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
177 (defvar gud-gdb-history nil)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
178
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
179 (defun gud-gdb-massage-args (file args)
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
180 (cons "-fullname" args))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
181
11960
5d3f2639cf3a (gud-gdb-marker-regexp): New var. Use path-separator.
Karl Heuer <kwzh@gnu.org>
parents: 11930
diff changeset
182 (defvar gud-gdb-marker-regexp
16843
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
183 ;; This used to use path-separator instead of ":";
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
184 ;; however, we found that on both Windows 32 and MSDOS
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
185 ;; a colon is correct here.
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
186 (concat "\032\032\\([^" ":" "\n]*\\)" ":"
a94faa952a55 (gud-gdb-marker-regexp): Use colon always, not path-separator.
Richard M. Stallman <rms@gnu.org>
parents: 16405
diff changeset
187 "\\([0-9]*\\)" ":" ".*\n"))
11960
5d3f2639cf3a (gud-gdb-marker-regexp): New var. Use path-separator.
Karl Heuer <kwzh@gnu.org>
parents: 11930
diff changeset
188
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
189 ;; There's no guarantee that Emacs will hand the filter the entire
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
190 ;; marker at once; it could be broken up across several strings. We
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
191 ;; might even receive a big chunk with several markers in it. If we
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
192 ;; receive a chunk of text which looks like it might contain the
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
193 ;; beginning of a marker, we save it here between calls to the
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
194 ;; filter.
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
195 (defvar gud-marker-acc "")
7317
ce56b572b5c8 (gud-marker-acc): Use make-variable-buffer-local.
Richard M. Stallman <rms@gnu.org>
parents: 7298
diff changeset
196 (make-variable-buffer-local 'gud-marker-acc)
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
197
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
198 (defun gud-gdb-marker-filter (string)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
199 (setq gud-marker-acc (concat gud-marker-acc string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
200 (let ((output ""))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
201
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
202 ;; Process all the complete markers in this chunk.
11960
5d3f2639cf3a (gud-gdb-marker-regexp): New var. Use path-separator.
Karl Heuer <kwzh@gnu.org>
parents: 11930
diff changeset
203 (while (string-match gud-gdb-marker-regexp gud-marker-acc)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
204 (setq
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
205
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
206 ;; Extract the frame position from the marker.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
207 gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
208 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
209 (string-to-int (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
210 (match-beginning 2)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
211 (match-end 2))))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
212
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
213 ;; Append any text before the marker to the output we're going
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
214 ;; to return - we don't include the marker in this text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
215 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
216 (substring gud-marker-acc 0 (match-beginning 0)))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
217
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
218 ;; Set the accumulator to the remaining text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
219 gud-marker-acc (substring gud-marker-acc (match-end 0))))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
220
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
221 ;; Does the remaining text look like it might end with the
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
222 ;; beginning of another marker? If it does, then keep it in
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
223 ;; gud-marker-acc until we receive the rest of it. Since we
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
224 ;; know the full marker regexp above failed, it's pretty simple to
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
225 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
226 (if (string-match "\032.*\\'" gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
227 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
228 ;; Everything before the potential marker start can be output.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
229 (setq output (concat output (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
230 0 (match-beginning 0))))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
231
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
232 ;; Everything after, we save, to combine with later input.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
233 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
234 (substring gud-marker-acc (match-beginning 0))))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
235
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
236 (setq output (concat output gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
237 gud-marker-acc ""))
4346
3011390123ed * gud.el (gud-gdb-marker-filter): Do not assume that the position
Jim Blandy <jimb@redhat.com>
parents: 4344
diff changeset
238
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
239 output))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
240
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
241 (defun gud-gdb-find-file (f)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
242 (save-excursion
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
243 (let ((buf (find-file-noselect f)))
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
244 (set-buffer buf)
12002
9d22f732d7d8 (gud-make-debug-menu): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11960
diff changeset
245 (gud-make-debug-menu)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
246 (local-set-key [menu-bar debug tbreak]
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
247 '("Temporary Breakpoint" . gud-tbreak))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
248 (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
249 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
250 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
251 buf)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
252
6238
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
253 (defvar gdb-minibuffer-local-map nil
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
254 "Keymap for minibuffer prompting of gdb startup command.")
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
255 (if gdb-minibuffer-local-map
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
256 ()
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
257 (setq gdb-minibuffer-local-map (copy-keymap minibuffer-local-map))
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
258 (define-key
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
259 gdb-minibuffer-local-map "\C-i" 'comint-dynamic-complete-filename))
fab2ffdf64d5 (gdb): Use a minibuffer map with TAB to complete a filename.
Karl Heuer <kwzh@gnu.org>
parents: 5997
diff changeset
260
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
261 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
262 (defun gdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
263 "Run gdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
264 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
265 and source-file directory for your debugger."
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
266 (interactive
15819
4ab015189fd1 (gdb): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 15805
diff changeset
267 (list (read-from-minibuffer "Run gdb (like this): "
4ab015189fd1 (gdb): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 15805
diff changeset
268 (if (consp gud-gdb-history)
4ab015189fd1 (gdb): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 15805
diff changeset
269 (car gud-gdb-history)
4ab015189fd1 (gdb): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 15805
diff changeset
270 "gdb ")
4ab015189fd1 (gdb): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 15805
diff changeset
271 gdb-minibuffer-local-map nil
4ab015189fd1 (gdb): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 15805
diff changeset
272 '(gud-gdb-history . 1))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
273
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
274 (gud-common-init command-line 'gud-gdb-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
275 'gud-gdb-marker-filter 'gud-gdb-find-file)
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
276
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
277 (gud-def gud-break "break %f:%l" "\C-b" "Set breakpoint at current line.")
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
278 (gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line.")
10518
d291152ebe20 (gdb): In gud-remove, specify the source file.
Richard M. Stallman <rms@gnu.org>
parents: 10448
diff changeset
279 (gud-def gud-remove "clear %f:%l" "\C-d" "Remove breakpoint at current line")
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
280 (gud-def gud-step "step %p" "\C-s" "Step one source line with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
281 (gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
282 (gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
283 (gud-def gud-cont "cont" "\C-r" "Continue with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
284 (gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
285 (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
286 (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
287 (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
288
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
289 (local-set-key "\C-i" 'gud-gdb-complete-command)
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
290 (local-set-key [menu-bar debug tbreak] '("Temporary Breakpoint" . gud-tbreak))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
291 (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
292 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
293 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
294 (setq comint-prompt-regexp "^(.*gdb[+]?) *")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
295 (setq paragraph-start comint-prompt-regexp)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
296 (run-hooks 'gdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
297 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
298
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
299 ;; One of the nice features of GDB is its impressive support for
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
300 ;; context-sensitive command completion. We preserve that feature
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
301 ;; in the GUD buffer by using a GDB command designed just for Emacs.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
302
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
303 ;; The completion process filter indicates when it is finished.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
304 (defvar gud-gdb-complete-in-progress)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
305
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
306 ;; Since output may arrive in fragments we accumulate partials strings here.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
307 (defvar gud-gdb-complete-string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
308
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
309 ;; We need to know how much of the completion to chop off.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
310 (defvar gud-gdb-complete-break)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
311
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
312 ;; The completion list is constructed by the process filter.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
313 (defvar gud-gdb-complete-list)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
314
6535
01db0be5fec8 (gud-comint-buffer): Move defvar up.
Richard M. Stallman <rms@gnu.org>
parents: 6531
diff changeset
315 (defvar gud-comint-buffer nil)
01db0be5fec8 (gud-comint-buffer): Move defvar up.
Richard M. Stallman <rms@gnu.org>
parents: 6531
diff changeset
316
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
317 (defun gud-gdb-complete-command ()
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
318 "Perform completion on the GDB command preceding point.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
319 This is implemented using the GDB `complete' command which isn't
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
320 available with older versions of GDB."
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
321 (interactive)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
322 (let* ((end (point))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
323 (command (save-excursion
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
324 (beginning-of-line)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
325 (and (looking-at comint-prompt-regexp)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
326 (goto-char (match-end 0)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
327 (buffer-substring (point) end)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
328 command-word)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
329 ;; Find the word break. This match will always succeed.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
330 (string-match "\\(\\`\\| \\)\\([^ ]*\\)\\'" command)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
331 (setq gud-gdb-complete-break (match-beginning 2)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
332 command-word (substring command gud-gdb-complete-break))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
333 ;; Temporarily install our filter function.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
334 (let ((gud-marker-filter 'gud-gdb-complete-filter))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
335 ;; Issue the command to GDB.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
336 (gud-basic-call (concat "complete " command))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
337 (setq gud-gdb-complete-in-progress t
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
338 gud-gdb-complete-string nil
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
339 gud-gdb-complete-list nil)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
340 ;; Slurp the output.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
341 (while gud-gdb-complete-in-progress
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
342 (accept-process-output (get-buffer-process gud-comint-buffer))))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
343 ;; Protect against old versions of GDB.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
344 (and gud-gdb-complete-list
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
345 (string-match "^Undefined command: \"complete\""
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
346 (car gud-gdb-complete-list))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
347 (error "This version of GDB doesn't support the `complete' command."))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
348 ;; Sort the list like readline.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
349 (setq gud-gdb-complete-list
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
350 (sort gud-gdb-complete-list (function string-lessp)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
351 ;; Remove duplicates.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
352 (let ((first gud-gdb-complete-list)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
353 (second (cdr gud-gdb-complete-list)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
354 (while second
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
355 (if (string-equal (car first) (car second))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
356 (setcdr first (setq second (cdr second)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
357 (setq first second
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
358 second (cdr second)))))
9816
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
359 ;; Add a trailing single quote if there is a unique completion
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
360 ;; and it contains an odd number of unquoted single quotes.
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
361 (and (= (length gud-gdb-complete-list) 1)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
362 (let ((str (car gud-gdb-complete-list))
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
363 (pos 0)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
364 (count 0))
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
365 (while (string-match "\\([^'\\]\\|\\\\'\\)*'" str pos)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
366 (setq count (1+ count)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
367 pos (match-end 0)))
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
368 (and (= (mod count 2) 1)
433b0117220b (gud-gdb-complete-command): Add a trailing single quote to partially quoted
Karl Heuer <kwzh@gnu.org>
parents: 9743
diff changeset
369 (setq gud-gdb-complete-list (list (concat str "'"))))))
6531
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
370 ;; Let comint handle the rest.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
371 (comint-dynamic-simple-complete command-word gud-gdb-complete-list)))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
372
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
373 ;; The completion process filter is installed temporarily to slurp the
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
374 ;; output of GDB up to the next prompt and build the completion list.
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
375 (defun gud-gdb-complete-filter (string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
376 (setq string (concat gud-gdb-complete-string string))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
377 (while (string-match "\n" string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
378 (setq gud-gdb-complete-list
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
379 (cons (substring string gud-gdb-complete-break (match-beginning 0))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
380 gud-gdb-complete-list))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
381 (setq string (substring string (match-end 0))))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
382 (if (string-match comint-prompt-regexp string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
383 (progn
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
384 (setq gud-gdb-complete-in-progress nil)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
385 string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
386 (progn
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
387 (setq gud-gdb-complete-string string)
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
388 "")))
bd13d17fb770 (gud-gdb-complete-command): New defun to support true
Richard M. Stallman <rms@gnu.org>
parents: 6361
diff changeset
389
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
390
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
391 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
392 ;; sdb functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
393
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
394 ;;; History of argument lists passed to sdb.
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
395 (defvar gud-sdb-history nil)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
396
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
397 (defvar gud-sdb-needs-tags (not (file-exists-p "/var"))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
398 "If nil, we're on a System V Release 4 and don't need the tags hack.")
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
399
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
400 (defvar gud-sdb-lastfile nil)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
401
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
402 (defun gud-sdb-massage-args (file args) args)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
403
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
404 (defun gud-sdb-marker-filter (string)
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
405 (setq gud-marker-acc
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
406 (if gud-marker-acc (concat gud-marker-acc string) string))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
407 (let (start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
408 ;; Process all complete markers in this chunk
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
409 (while
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
410 (cond
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
411 ;; System V Release 3.2 uses this format
13797
d00c8f107a39 (gud-sdb-marker-filter): Modify the regexp for sysVR3 to
Karl Heuer <kwzh@gnu.org>
parents: 13681
diff changeset
412 ((string-match "\\(^\\|\n\\)\\*?\\(0x\\w* in \\)?\\([^:\n]*\\):\\([0-9]*\\):.*\n"
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
413 gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
414 (setq gud-last-frame
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
415 (cons
13797
d00c8f107a39 (gud-sdb-marker-filter): Modify the regexp for sysVR3 to
Karl Heuer <kwzh@gnu.org>
parents: 13681
diff changeset
416 (substring gud-marker-acc (match-beginning 3) (match-end 3))
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
417 (string-to-int
13797
d00c8f107a39 (gud-sdb-marker-filter): Modify the regexp for sysVR3 to
Karl Heuer <kwzh@gnu.org>
parents: 13681
diff changeset
418 (substring gud-marker-acc (match-beginning 4) (match-end 4))))))
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
419 ;; System V Release 4.0 quite often clumps two lines together
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
420 ((string-match "^\\(BREAKPOINT\\|STEPPED\\) process [0-9]+ function [^ ]+ in \\(.+\\)\n\\([0-9]+\\):"
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
421 gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
422 (setq gud-sdb-lastfile
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
423 (substring gud-marker-acc (match-beginning 2) (match-end 2)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
424 (setq gud-last-frame
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
425 (cons
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
426 gud-sdb-lastfile
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
427 (string-to-int
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
428 (substring gud-marker-acc (match-beginning 3) (match-end 3))))))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
429 ;; System V Release 4.0
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
430 ((string-match "^\\(BREAKPOINT\\|STEPPED\\) process [0-9]+ function [^ ]+ in \\(.+\\)\n"
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
431 gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
432 (setq gud-sdb-lastfile
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
433 (substring gud-marker-acc (match-beginning 2) (match-end 2))))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
434 ((and gud-sdb-lastfile (string-match "^\\([0-9]+\\):"
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
435 gud-marker-acc start))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
436 (setq gud-last-frame
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
437 (cons
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
438 gud-sdb-lastfile
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
439 (string-to-int
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
440 (substring gud-marker-acc (match-beginning 1) (match-end 1))))))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
441 (t
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
442 (setq gud-sdb-lastfile nil)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
443 (setq start (match-end 0)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
444
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
445 ;; Search for the last incomplete line in this chunk
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
446 (while (string-match "\n" gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
447 (setq start (match-end 0)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
448
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
449 ;; If we have an incomplete line, store it in gud-marker-acc.
13797
d00c8f107a39 (gud-sdb-marker-filter): Modify the regexp for sysVR3 to
Karl Heuer <kwzh@gnu.org>
parents: 13681
diff changeset
450 (setq gud-marker-acc (substring gud-marker-acc (or start 0))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
451 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
452
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
453 (defun gud-sdb-find-file (f)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
454 (save-excursion
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
455 (let ((buf (if gud-sdb-needs-tags
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
456 (find-tag-noselect f)
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
457 (find-file-noselect f))))
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
458 (set-buffer buf)
12002
9d22f732d7d8 (gud-make-debug-menu): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11960
diff changeset
459 (gud-make-debug-menu)
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
460 (local-set-key [menu-bar debug tbreak] '("Temporary Breakpoint" . gud-tbreak))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
461 buf)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
462
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
463 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
464 (defun sdb (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
465 "Run sdb on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
466 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
467 and source-file directory for your debugger."
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
468 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
469 (list (read-from-minibuffer "Run sdb (like this): "
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
470 (if (consp gud-sdb-history)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
471 (car gud-sdb-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
472 "sdb ")
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
473 nil nil
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
474 '(gud-sdb-history . 1))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
475 (if (and gud-sdb-needs-tags
7461
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
476 (not (and (boundp 'tags-file-name)
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
477 (stringp tags-file-name)
1ce5d720b347 (sdb): Handle tags-file-name as nil.
Richard M. Stallman <rms@gnu.org>
parents: 7429
diff changeset
478 (file-exists-p tags-file-name))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
479 (error "The sdb support requires a valid tags table to work."))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
480
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
481 (gud-common-init command-line 'gud-sdb-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
482 'gud-sdb-marker-filter 'gud-sdb-find-file)
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
483
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
484 (gud-def gud-break "%l b" "\C-b" "Set breakpoint at current line.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
485 (gud-def gud-tbreak "%l c" "\C-t" "Set temporary breakpoint at current line.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
486 (gud-def gud-remove "%l d" "\C-d" "Remove breakpoint at current line")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
487 (gud-def gud-step "s %p" "\C-s" "Step one source line with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
488 (gud-def gud-stepi "i %p" "\C-i" "Step one instruction with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
489 (gud-def gud-next "S %p" "\C-n" "Step one line (skip functions).")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
490 (gud-def gud-cont "c" "\C-r" "Continue with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
491 (gud-def gud-print "%e/" "\C-p" "Evaluate C expression at point.")
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
492
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
493 (setq comint-prompt-regexp "\\(^\\|\n\\)\\*")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
494 (setq paragraph-start comint-prompt-regexp)
10217
d112e49af18b (gdb): Correct tbreak doc string.
Richard M. Stallman <rms@gnu.org>
parents: 10203
diff changeset
495 (local-set-key [menu-bar debug tbreak]
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
496 '("Temporary Breakpoint" . gud-tbreak))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
497 (run-hooks 'sdb-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
498 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
499
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
500 ;; ======================================================================
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
501 ;; dbx functions
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
502
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
503 ;;; History of argument lists passed to dbx.
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
504 (defvar gud-dbx-history nil)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
505
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
506 (defcustom gud-dbx-directories nil
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
507 "*A list of directories that dbx should search for source code.
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
508 If nil, only source files in the program directory
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
509 will be known to dbx.
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
510
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
511 The file names should be absolute, or relative to the directory
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
512 containing the executable being debugged."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
513 :type '(choice (const :tag "Current Directory" nil)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
514 (repeat :value ("")
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
515 directory))
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
516 :group 'gud)
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
517
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
518 (defun gud-dbx-massage-args (file args)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
519 (nconc (let ((directories gud-dbx-directories)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
520 (result nil))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
521 (while directories
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
522 (setq result (cons (car directories) (cons "-I" result)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
523 (setq directories (cdr directories)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
524 (nreverse result))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
525 args))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
526
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
527 (defun gud-dbx-file-name (f)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
528 "Transform a relative file name to an absolute file name, for dbx."
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
529 (let ((result nil))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
530 (if (file-exists-p f)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
531 (setq result (expand-file-name f))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
532 (let ((directories gud-dbx-directories))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
533 (while directories
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
534 (let ((path (concat (car directories) "/" f)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
535 (if (file-exists-p path)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
536 (setq result (expand-file-name path)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
537 directories nil)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
538 (setq directories (cdr directories)))))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
539 result))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
540
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
541 (defun gud-dbx-marker-filter (string)
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
542 (setq gud-marker-acc (if gud-marker-acc (concat gud-marker-acc string) string))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
543
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
544 (let (start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
545 ;; Process all complete markers in this chunk.
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
546 (while (or (string-match
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
547 "stopped in .* at line \\([0-9]*\\) in file \"\\([^\"]*\\)\""
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
548 gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
549 (string-match
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
550 "signal .* in .* at line \\([0-9]*\\) in file \"\\([^\"]*\\)\""
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
551 gud-marker-acc start))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
552 (setq gud-last-frame
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
553 (cons
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
554 (substring gud-marker-acc (match-beginning 2) (match-end 2))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
555 (string-to-int
10319
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
556 (substring gud-marker-acc (match-beginning 1) (match-end 1))))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
557 start (match-end 0)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
558
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
559 ;; Search for the last incomplete line in this chunk
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
560 (while (string-match "\n" gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
561 (setq start (match-end 0)))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
562
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
563 ;; If the incomplete line APPEARS to begin with another marker, keep it
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
564 ;; in the accumulator. Otherwise, clear the accumulator to avoid an
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
565 ;; unnecessary concat during the next call.
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
566 (setq gud-marker-acc
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
567 (if (string-match "\\(stopped\\|signal\\)" gud-marker-acc start)
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
568 (substring gud-marker-acc (match-beginning 0))
bf67e2fdd393 (gud-dbx-marker-filter): Use gud-marker-acc like gud-gdb-marker-filter.
Richard M. Stallman <rms@gnu.org>
parents: 10217
diff changeset
569 nil)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
570 string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
571
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
572 ;; Functions for Mips-style dbx. Given the option `-emacs', documented in
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
573 ;; OSF1, not necessarily elsewhere, it produces markers similar to gdb's.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
574 (defvar gud-mips-p
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
575 (or (string-match "^mips-[^-]*-ultrix" system-configuration)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
576 ;; We haven't tested gud on this system:
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
577 (string-match "^mips-[^-]*-riscos" system-configuration)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
578 ;; It's documented on OSF/1.3
8172
1eb5638ab4b5 (gud-mips-p): Check for OSF system on Alpha also.
Richard M. Stallman <rms@gnu.org>
parents: 7910
diff changeset
579 (string-match "^mips-[^-]*-osf1" system-configuration)
1eb5638ab4b5 (gud-mips-p): Check for OSF system on Alpha also.
Richard M. Stallman <rms@gnu.org>
parents: 7910
diff changeset
580 (string-match "^alpha-[^-]*-osf" system-configuration))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
581 "Non-nil to assume the MIPS/OSF dbx conventions (argument `-emacs').")
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
582
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
583 (defun gud-mipsdbx-massage-args (file args)
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
584 (cons "-emacs" args))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
585
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
586 ;; This is just like the gdb one except for the regexps since we need to cope
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
587 ;; with an optional breakpoint number in [] before the ^Z^Z
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
588 (defun gud-mipsdbx-marker-filter (string)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
589 (setq gud-marker-acc (concat gud-marker-acc string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
590 (let ((output ""))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
591
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
592 ;; Process all the complete markers in this chunk.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
593 (while (string-match
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
594 ;; This is like th gdb marker but with an optional
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
595 ;; leading break point number like `[1] '
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
596 "[][ 0-9]*\032\032\\([^:\n]*\\):\\([0-9]*\\):.*\n"
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
597 gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
598 (setq
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
599
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
600 ;; Extract the frame position from the marker.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
601 gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
602 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
603 (string-to-int (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
604 (match-beginning 2)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
605 (match-end 2))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
606
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
607 ;; Append any text before the marker to the output we're going
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
608 ;; to return - we don't include the marker in this text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
609 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
610 (substring gud-marker-acc 0 (match-beginning 0)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
611
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
612 ;; Set the accumulator to the remaining text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
613 gud-marker-acc (substring gud-marker-acc (match-end 0))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
614
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
615 ;; Does the remaining text look like it might end with the
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
616 ;; beginning of another marker? If it does, then keep it in
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
617 ;; gud-marker-acc until we receive the rest of it. Since we
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
618 ;; know the full marker regexp above failed, it's pretty simple to
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
619 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
620 (if (string-match "[][ 0-9]*\032.*\\'" gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
621 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
622 ;; Everything before the potential marker start can be output.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
623 (setq output (concat output (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
624 0 (match-beginning 0))))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
625
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
626 ;; Everything after, we save, to combine with later input.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
627 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
628 (substring gud-marker-acc (match-beginning 0))))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
629
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
630 (setq output (concat output gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
631 gud-marker-acc ""))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
632
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
633 output))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
634
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
635 ;; The dbx in IRIX is a pain. It doesn't print the file name when
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
636 ;; stopping at a breakpoint (but you do get it from the `up' and
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
637 ;; `down' commands...). The only way to extract the information seems
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
638 ;; to be with a `file' command, although the current line number is
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
639 ;; available in $curline. Thus we have to look for output which
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
640 ;; appears to indicate a breakpoint. Then we prod the dbx sub-process
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
641 ;; to output the information we want with a combination of the
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
642 ;; `printf' and `file' commands as a pseudo marker which we can
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
643 ;; recognise next time through the marker-filter. This would be like
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
644 ;; the gdb marker but you can't get the file name without a newline...
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
645 ;; Note that gud-remove won't work since Irix dbx expects a breakpoint
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
646 ;; number rather than a line number etc. Maybe this could be made to
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
647 ;; work by listing all the breakpoints and picking the one(s) with the
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
648 ;; correct line number, but life's too short.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
649 ;; d.love@dl.ac.uk (Dave Love) can be blamed for this
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
650
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
651 (defvar gud-irix-p
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
652 (and (string-match "^mips-[^-]*-irix" system-configuration)
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
653 (not (string-match "irix[6-9]\\.[1-9]" system-configuration)))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
654 "Non-nil to assume the interface appropriate for IRIX dbx.
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
655 This works in IRIX 4, 5 and 6, but `gud-dbx-use-stopformat-p' provides
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
656 a better solution in 6.1 upwards.")
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
657 (defvar gud-dbx-use-stopformat-p
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
658 (string-match "irix[6-9]\\.[1-9]" system-configuration)
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
659 "Non-nil to use the dbx feature present at least from Irix 6.1
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
660 whereby $stopformat=1 produces an output format compatiable with
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
661 `gud-dbx-marker-filter'.")
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
662 ;; [Irix dbx seems to be a moving target. The dbx output changed
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
663 ;; subtly sometime between OS v4.0.5 and v5.2 so that, for instance,
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
664 ;; the output from `up' is no longer spotted by gud (and it's probably
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
665 ;; not distinctive enough to try to match it -- use C-<, C->
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
666 ;; exclusively) . For 5.3 and 6.0, the $curline variable changed to
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
667 ;; `long long'(why?!), so the printf stuff needed changing. The line
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
668 ;; number was cast to `long' as a compromise between the new `long
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
669 ;; long' and the original `int'. This is reported not to work in 6.2,
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
670 ;; so it's changed back to int -- don't make your sources too long.
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
671 ;; From Irix6.1 (but not 6.0?) dbx supports an undocumented feature
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
672 ;; whereby `set $stopformat=1' reportedly produces output compatible
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
673 ;; with `gud-dbx-marker-filter', which we prefer.
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
674
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
675 ;; The process filter is also somewhat
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
676 ;; unreliable, sometimes not spotting the markers; I don't know
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
677 ;; whether there's anything that can be done about that. It would be
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
678 ;; much better if SGI could be persuaded to (re?)instate the MIPS
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
679 ;; -emacs flag for gdb-like output (which ought to be possible as most
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
680 ;; of the communication I've had over it has been from sgi.com).]
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
681
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
682 ;; this filter is influenced by the xdb one rather than the gdb one
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
683 (defun gud-irixdbx-marker-filter (string)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
684 (let (result (case-fold-search nil))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
685 (if (or (string-match comint-prompt-regexp string)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
686 (string-match ".*\012" string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
687 (setq result (concat gud-marker-acc string)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
688 gud-marker-acc "")
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
689 (setq gud-marker-acc (concat gud-marker-acc string)))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
690 (if result
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
691 (cond
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
692 ;; look for breakpoint or signal indication e.g.:
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
693 ;; [2] Process 1267 (pplot) stopped at [params:338 ,0x400ec0]
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
694 ;; Process 1281 (pplot) stopped at [params:339 ,0x400ec8]
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
695 ;; Process 1270 (pplot) Floating point exception [._read._read:16 ,0x452188]
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
696 ((string-match
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
697 "^\\(\\[[0-9]+] \\)?Process +[0-9]+ ([^)]*) [^[]+\\[[^]\n]*]\n"
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
698 result)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
699 ;; prod dbx into printing out the line number and file
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
700 ;; name in a form we can grok as below
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
701 (process-send-string (get-buffer-process gud-comint-buffer)
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
702 "printf \"\032\032%1d:\",(int)$curline;file\n"))
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
703 ;; look for result of, say, "up" e.g.:
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
704 ;; .pplot.pplot(0x800) ["src/pplot.f":261, 0x400c7c]
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
705 ;; (this will also catch one of the lines printed by "where")
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
706 ((string-match
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
707 "^[^ ][^[]*\\[\"\\([^\"]+\\)\":\\([0-9]+\\), [^]]+]\n"
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
708 result)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
709 (let ((file (substring result (match-beginning 1)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
710 (match-end 1))))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
711 (if (file-exists-p file)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
712 (setq gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
713 (cons
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
714 (substring
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
715 result (match-beginning 1) (match-end 1))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
716 (string-to-int
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
717 (substring
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
718 result (match-beginning 2) (match-end 2)))))))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
719 result)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
720 ((string-match ; kluged-up marker as above
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
721 "\032\032\\([0-9]*\\):\\(.*\\)\n" result)
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
722 (let ((file (gud-dbx-file-name
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
723 (substring result (match-beginning 2) (match-end 2)))))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
724 (if (and file (file-exists-p file))
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
725 (setq gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
726 (cons
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
727 file
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
728 (string-to-int
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
729 (substring
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
730 result (match-beginning 1) (match-end 1)))))))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
731 (setq result (substring result 0 (match-beginning 0))))))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
732 (or result "")))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
733
18098
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
734 (defvar gud-dgux-p (string-match "-dgux" system-configuration)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
735 "Non-nil means to assume the interface approriate for DG/UX dbx.
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
736 This was tested using R4.11.")
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
737
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
738 ;; There are a couple of differences between DG's dbx output and normal
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
739 ;; dbx output which make it nontrivial to integrate this into the
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
740 ;; standard dbx-marker-filter (mainly, there are a different number of
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
741 ;; backreferences). The markers look like:
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
742 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
743 ;; (0) Stopped at line 10, routine main(argc=1, argv=0xeffff0e0), file t.c
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
744 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
745 ;; from breakpoints (the `(0)' there isn't constant, it's the breakpoint
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
746 ;; number), and
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
747 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
748 ;; Stopped at line 13, routine main(argc=1, argv=0xeffff0e0), file t.c
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
749 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
750 ;; from signals and
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
751 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
752 ;; Frame 21, line 974, routine command_loop(), file keyboard.c
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
753 ;;
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
754 ;; from up/down/where.
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
755
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
756 (defun gud-dguxdbx-marker-filter (string)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
757 (setq gud-marker-acc (if gud-marker-acc
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
758 (concat gud-marker-acc string)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
759 string))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
760 (let ((re (concat "^\\(\\(([0-9]+) \\)?Stopped at\\|Frame [0-9]+,\\)"
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
761 " line \\([0-9]+\\), routine .*, file \\([^ \t\n]+\\)"))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
762 start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
763 ;; Process all complete markers in this chunk.
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
764 (while (string-match re gud-marker-acc start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
765 (setq gud-last-frame
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
766 (cons
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
767 (substring gud-marker-acc (match-beginning 4) (match-end 4))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
768 (string-to-int (substring gud-marker-acc
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
769 (match-beginning 3) (match-end 3))))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
770 start (match-end 0)))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
771
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
772 ;; Search for the last incomplete line in this chunk
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
773 (while (string-match "\n" gud-marker-acc start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
774 (setq start (match-end 0)))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
775
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
776 ;; If the incomplete line APPEARS to begin with another marker, keep it
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
777 ;; in the accumulator. Otherwise, clear the accumulator to avoid an
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
778 ;; unnecessary concat during the next call.
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
779 (setq gud-marker-acc
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
780 (if (string-match "Stopped\\|Frame" gud-marker-acc start)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
781 (substring gud-marker-acc (match-beginning 0))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
782 nil)))
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
783 string)
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
784
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
785 (defun gud-dbx-find-file (f)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
786 (save-excursion
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
787 (let ((realf (gud-dbx-file-name f)))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
788 (if realf
13659
283d4d3e5460 (gud-dbx-find-file): Find correct source file.
Richard M. Stallman <rms@gnu.org>
parents: 13288
diff changeset
789 (let ((buf (find-file-noselect realf)))
13288
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
790 (set-buffer buf)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
791 (gud-make-debug-menu)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
792 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
793 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
794 buf)
2699145c01cb (gud-dbx-directories): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 13190
diff changeset
795 nil))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
796
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
797 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
798 (defun dbx (command-line)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
799 "Run dbx on program FILE in buffer *gud-FILE*.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
800 The directory containing FILE becomes the initial working directory
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
801 and source-file directory for your debugger."
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
802 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
803 (list (read-from-minibuffer "Run dbx (like this): "
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
804 (if (consp gud-dbx-history)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
805 (car gud-dbx-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
806 "dbx ")
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
807 nil nil
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
808 '(gud-dbx-history . 1))))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
809
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
810 (cond
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
811 (gud-mips-p
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
812 (gud-common-init command-line 'gud-mipsdbx-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
813 'gud-mipsdbx-marker-filter 'gud-dbx-find-file))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
814 (gud-irix-p
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
815 (gud-common-init command-line 'gud-dbx-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
816 'gud-irixdbx-marker-filter 'gud-dbx-find-file))
18098
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
817 (gud-dgux-p
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
818 (gud-common-init command-line 'gud-dbx-massage-args
10b2526db6f0 (gud-dgux-p, gud-dguxdbx-marker-filter): New functions.
Richard M. Stallman <rms@gnu.org>
parents: 17663
diff changeset
819 'gud-dguxdbx-marker-filter 'gud-dbx-find-file))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
820 (t
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
821 (gud-common-init command-line 'gud-dbx-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
822 'gud-dbx-marker-filter 'gud-dbx-find-file)))
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
823
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
824 (cond
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
825 (gud-mips-p
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
826 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
827 (gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.")
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
828 (gud-def gud-break "stop at \"%f\":%l"
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
829 "\C-b" "Set breakpoint at current line.")
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
830 (gud-def gud-finish "return" "\C-f" "Finish executing current function."))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
831 (gud-irix-p
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
832 (gud-def gud-break "stop at \"%d%f\":%l"
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
833 "\C-b" "Set breakpoint at current line.")
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
834 (gud-def gud-finish "return" "\C-f" "Finish executing current function.")
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
835 (gud-def gud-up "up %p; printf \"\032\032%1d:\",(int)$curline;file\n"
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
836 "<" "Up (numeric arg) stack frames.")
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
837 (gud-def gud-down "down %p; printf \"\032\032%1d:\",(int)$curline;file\n"
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
838 ">" "Down (numeric arg) stack frames.")
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
839 ;; Make dbx give out the source location info that we need.
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
840 (process-send-string (get-buffer-process gud-comint-buffer)
15624
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
841 "printf \"\032\032%1d:\",(int)$curline;file\n"))
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
842 (gud-dbx-use-stopformat-p
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
843 (process-send-string (get-buffer-process gud-comint-buffer)
2cf06d9df144 (gud-irix-p): Exclude Irix6.1 up.
Karl Heuer <kwzh@gnu.org>
parents: 15455
diff changeset
844 "set $stopformat=1\n"))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
845 (t
10203
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
846 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
c1f7894118f9 (gud-irixdbx-marker-filter): Changes for Irix dbx.
Richard M. Stallman <rms@gnu.org>
parents: 10095
diff changeset
847 (gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.")
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
848 (gud-def gud-break "file \"%d%f\"\nstop at %l"
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
849 "\C-b" "Set breakpoint at current line.")))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
850
2960
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
851 (gud-def gud-remove "clear %l" "\C-d" "Remove breakpoint at current line")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
852 (gud-def gud-step "step %p" "\C-s" "Step one line with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
853 (gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
854 (gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
855 (gud-def gud-cont "cont" "\C-r" "Continue with display.")
372386917f03 (gud-def): Fix inclusion of the define-key.
Richard M. Stallman <rms@gnu.org>
parents: 2594
diff changeset
856 (gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.")
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
857
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
858 (setq comint-prompt-regexp "^[^)\n]*dbx) *")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
859 (setq paragraph-start comint-prompt-regexp)
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
860 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
861 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
862 (run-hooks 'dbx-mode-hook)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
863 )
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
864
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
865 ;; ======================================================================
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
866 ;; xdb (HP PARISC debugger) functions
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
867
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
868 ;;; History of argument lists passed to xdb.
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
869 (defvar gud-xdb-history nil)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
870
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
871 (defcustom gud-xdb-directories nil
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
872 "*A list of directories that xdb should search for source code.
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
873 If nil, only source files in the program directory
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
874 will be known to xdb.
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
875
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
876 The file names should be absolute, or relative to the directory
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
877 containing the executable being debugged."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
878 :type '(choice (const :tag "Current Directory" nil)
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
879 (repeat :value ("")
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
880 directory))
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
881 :group 'gud)
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
882
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
883 (defun gud-xdb-massage-args (file args)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
884 (nconc (let ((directories gud-xdb-directories)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
885 (result nil))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
886 (while directories
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
887 (setq result (cons (car directories) (cons "-d" result)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
888 (setq directories (cdr directories)))
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
889 (nreverse result))
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
890 args))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
891
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
892 (defun gud-xdb-file-name (f)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
893 "Transform a relative pathname to a full pathname in xdb mode"
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
894 (let ((result nil))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
895 (if (file-exists-p f)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
896 (setq result (expand-file-name f))
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
897 (let ((directories gud-xdb-directories))
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
898 (while directories
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
899 (let ((path (concat (car directories) "/" f)))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
900 (if (file-exists-p path)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
901 (setq result (expand-file-name path)
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
902 directories nil)))
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
903 (setq directories (cdr directories)))))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
904 result))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
905
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
906 ;; xdb does not print the lines all at once, so we have to accumulate them
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
907 (defun gud-xdb-marker-filter (string)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
908 (let (result)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
909 (if (or (string-match comint-prompt-regexp string)
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
910 (string-match ".*\012" string))
7165
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
911 (setq result (concat gud-marker-acc string)
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
912 gud-marker-acc "")
d53c76129763 (gud-mips-p, gud-irix-p): Test system-configuration.
Richard M. Stallman <rms@gnu.org>
parents: 7074
diff changeset
913 (setq gud-marker-acc (concat gud-marker-acc string)))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
914 (if result
12743
d9dc148cd8ac (gud-xdb-marker-filter): Change pattern to accept spc at end.
Richard M. Stallman <rms@gnu.org>
parents: 12340
diff changeset
915 (if (or (string-match "\\([^\n \t:]+\\): [^:]+: \\([0-9]+\\)[: ]"
d9dc148cd8ac (gud-xdb-marker-filter): Change pattern to accept spc at end.
Richard M. Stallman <rms@gnu.org>
parents: 12340
diff changeset
916 result)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
917 (string-match "[^: \t]+:[ \t]+\\([^:]+\\): [^:]+: \\([0-9]+\\):"
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
918 result))
12743
d9dc148cd8ac (gud-xdb-marker-filter): Change pattern to accept spc at end.
Richard M. Stallman <rms@gnu.org>
parents: 12340
diff changeset
919 (let ((line (string-to-int
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
920 (substring result (match-beginning 2) (match-end 2))))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
921 (file (gud-xdb-file-name
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
922 (substring result (match-beginning 1) (match-end 1)))))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
923 (if file
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
924 (setq gud-last-frame (cons file line))))))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
925 (or result "")))
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
926
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
927 (defun gud-xdb-find-file (f)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
928 (save-excursion
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
929 (let ((realf (gud-xdb-file-name f)))
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
930 (if realf
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
931 (let ((buf (find-file-noselect realf)))
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
932 (set-buffer buf)
12002
9d22f732d7d8 (gud-make-debug-menu): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11960
diff changeset
933 (gud-make-debug-menu)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
934 (local-set-key [menu-bar debug tbreak]
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
935 '("Temporary Breakpoint" . gud-tbreak))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
936 (local-set-key [menu-bar debug finish]
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
937 '("Finish Function" . gud-finish))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
938 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
939 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
940 buf)
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
941 nil))))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
942
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
943 ;;;###autoload
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
944 (defun xdb (command-line)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
945 "Run xdb on program FILE in buffer *gud-FILE*.
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
946 The directory containing FILE becomes the initial working directory
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
947 and source-file directory for your debugger.
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
948
3745
3c4f7e74e3f0 (gud-xdb-directories): Renamed from gud-xdb-paths.
Richard M. Stallman <rms@gnu.org>
parents: 3738
diff changeset
949 You can set the variable 'gud-xdb-directories' to a list of program source
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
950 directories if your program contains sources from more than one directory."
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
951 (interactive
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
952 (list (read-from-minibuffer "Run xdb (like this): "
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
953 (if (consp gud-xdb-history)
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
954 (car gud-xdb-history)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
955 "xdb ")
3930
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
956 nil nil
ac686479ca51 * gud.el: Add history lists to the debugging commands, so we don't
Jim Blandy <jimb@redhat.com>
parents: 3745
diff changeset
957 '(gud-xdb-history . 1))))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
958
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
959 (gud-common-init command-line 'gud-xdb-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
960 'gud-xdb-marker-filter 'gud-xdb-find-file)
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
961
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
962 (gud-def gud-break "b %f:%l" "\C-b" "Set breakpoint at current line.")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
963 (gud-def gud-tbreak "b %f:%l\\t" "\C-t"
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
964 "Set temporary breakpoint at current line.")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
965 (gud-def gud-remove "db" "\C-d" "Remove breakpoint at current line")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
966 (gud-def gud-step "s %p" "\C-s" "Step one line with display.")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
967 (gud-def gud-next "S %p" "\C-n" "Step one line (skip functions).")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
968 (gud-def gud-cont "c" "\C-r" "Continue with display.")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
969 (gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
970 (gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
971 (gud-def gud-finish "bu\\t" "\C-f" "Finish executing current function.")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
972 (gud-def gud-print "p %e" "\C-p" "Evaluate C expression at point.")
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
973
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
974 (setq comint-prompt-regexp "^>")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
975 (setq paragraph-start comint-prompt-regexp)
12032
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
976 (local-set-key [menu-bar debug tbreak] '("Temporary Breakpoint" . gud-tbreak))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
977 (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
978 (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
b60e87249b27 Fix capitalization in menu bar.
Karl Heuer <kwzh@gnu.org>
parents: 12004
diff changeset
979 (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
980 (run-hooks 'xdb-mode-hook))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
981
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
982 ;; ======================================================================
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
983 ;; perldb functions
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
984
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
985 ;;; History of argument lists passed to perldb.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
986 (defvar gud-perldb-history nil)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
987
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
988 (defun gud-perldb-massage-args (file args)
16327
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
989 (cond ((equal (car args) "-e")
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
990 (cons "-d"
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
991 (cons (car args)
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
992 (cons (nth 1 args)
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
993 (cons "--" (cons "-emacs" (cdr (cdr args))))))))
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
994 (t
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
995 (cons "-d" (cons (car args) (cons "-emacs" (cdr args)))))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
996
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
997 ;; There's no guarantee that Emacs will hand the filter the entire
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
998 ;; marker at once; it could be broken up across several strings. We
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
999 ;; might even receive a big chunk with several markers in it. If we
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1000 ;; receive a chunk of text which looks like it might contain the
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1001 ;; beginning of a marker, we save it here between calls to the
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1002 ;; filter.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1003 (defvar gud-perldb-marker-acc "")
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1004
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1005 (defun gud-perldb-marker-filter (string)
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1006 (setq gud-marker-acc (concat gud-marker-acc string))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1007 (let ((output ""))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1008
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1009 ;; Process all the complete markers in this chunk.
16327
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1010 (while (string-match "\032\032\\(\\([a-zA-Z]:\\)?[^:\n]*\\):\\([0-9]*\\):.*\n"
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1011 gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1012 (setq
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1013
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1014 ;; Extract the frame position from the marker.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1015 gud-last-frame
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1016 (cons (substring gud-marker-acc (match-beginning 1) (match-end 1))
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1017 (string-to-int (substring gud-marker-acc
16327
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1018 (match-beginning 3)
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1019 (match-end 3))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1020
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1021 ;; Append any text before the marker to the output we're going
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1022 ;; to return - we don't include the marker in this text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1023 output (concat output
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1024 (substring gud-marker-acc 0 (match-beginning 0)))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1025
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1026 ;; Set the accumulator to the remaining text.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1027 gud-marker-acc (substring gud-marker-acc (match-end 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1028
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1029 ;; Does the remaining text look like it might end with the
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1030 ;; beginning of another marker? If it does, then keep it in
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1031 ;; gud-marker-acc until we receive the rest of it. Since we
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1032 ;; know the full marker regexp above failed, it's pretty simple to
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1033 ;; test for marker starts.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1034 (if (string-match "\032.*\\'" gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1035 (progn
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1036 ;; Everything before the potential marker start can be output.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1037 (setq output (concat output (substring gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1038 0 (match-beginning 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1039
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1040 ;; Everything after, we save, to combine with later input.
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1041 (setq gud-marker-acc
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1042 (substring gud-marker-acc (match-beginning 0))))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1043
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1044 (setq output (concat output gud-marker-acc)
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1045 gud-marker-acc ""))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1046
10042
d062993c96a0 (gud-gdb-marker-filter, gud-irixdbx-marker-filter)
Richard M. Stallman <rms@gnu.org>
parents: 9816
diff changeset
1047 output))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1048
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1049 (defun gud-perldb-find-file (f)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
1050 (save-excursion
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
1051 (let ((buf (find-file-noselect f)))
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
1052 (set-buffer buf)
12004
b28537b10443 (gud-perldb-find-file): Use gud-make-debug-menu.
Karl Heuer <kwzh@gnu.org>
parents: 12003
diff changeset
1053 (gud-make-debug-menu)
10448
ec596f12f13f (gud-gdb-find-file): Propagate debug menu to found buffers.
Richard M. Stallman <rms@gnu.org>
parents: 10447
diff changeset
1054 buf)))
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1055
17663
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1056 (defcustom perldb-command-name "perl"
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1057 "File name for executing Perl."
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1058 :type 'string
d2c64a1563f7 Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17658
diff changeset
1059 :group 'gud)
15755
95be49f33453 (perldb-command-name): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15624
diff changeset
1060
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1061 ;;;###autoload
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1062 (defun perldb (command-line)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1063 "Run perldb on program FILE in buffer *gud-FILE*.
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1064 The directory containing FILE becomes the initial working directory
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1065 and source-file directory for your debugger."
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1066 (interactive
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1067 (list (read-from-minibuffer "Run perldb (like this): "
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1068 (if (consp gud-perldb-history)
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1069 (car gud-perldb-history)
16362
0a969fac6f65 (perldb): Supply visited file name, or -e 0, as default args.
Richard M. Stallman <rms@gnu.org>
parents: 16327
diff changeset
1070 (concat perldb-command-name
0a969fac6f65 (perldb): Supply visited file name, or -e 0, as default args.
Richard M. Stallman <rms@gnu.org>
parents: 16327
diff changeset
1071 " "
0a969fac6f65 (perldb): Supply visited file name, or -e 0, as default args.
Richard M. Stallman <rms@gnu.org>
parents: 16327
diff changeset
1072 (or (buffer-file-name)
0a969fac6f65 (perldb): Supply visited file name, or -e 0, as default args.
Richard M. Stallman <rms@gnu.org>
parents: 16327
diff changeset
1073 "-e 0"))
0a969fac6f65 (perldb): Supply visited file name, or -e 0, as default args.
Richard M. Stallman <rms@gnu.org>
parents: 16327
diff changeset
1074 " ")
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1075 nil nil
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1076 '(gud-perldb-history . 1))))
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1077
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1078 (gud-common-init command-line 'gud-perldb-massage-args
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1079 'gud-perldb-marker-filter 'gud-perldb-find-file)
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1080
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1081 (gud-def gud-break "b %l" "\C-b" "Set breakpoint at current line.")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1082 (gud-def gud-remove "d %l" "\C-d" "Remove breakpoint at current line")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1083 (gud-def gud-step "s" "\C-s" "Step one source line with display.")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1084 (gud-def gud-next "n" "\C-n" "Step one line (skip functions).")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1085 (gud-def gud-cont "c" "\C-r" "Continue with display.")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1086 ; (gud-def gud-finish "finish" "\C-f" "Finish executing current function.")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1087 ; (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1088 ; (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).")
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1089 (gud-def gud-print "%e" "\C-p" "Evaluate perl expression at point.")
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1090
16327
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1091 (setq comint-prompt-regexp "^ DB<+[0-9]+>+ ")
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
1092 (setq paragraph-start comint-prompt-regexp)
4732
22e673b984fc Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 4729
diff changeset
1093 (run-hooks 'perldb-mode-hook)
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1094 )
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1095
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1096 ;;
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1097 ;; End of debugger-specific information
477
ab9a55b26bd4 *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 460
diff changeset
1098 ;;
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1099
4729
fdbcbaea7296 (perldb): New function, plus subroutines.
Richard M. Stallman <rms@gnu.org>
parents: 4497
diff changeset
1100
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1101 ;;; When we send a command to the debugger via gud-call, it's annoying
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1102 ;;; to see the command and the new prompt inserted into the debugger's
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1103 ;;; buffer; we have other ways of knowing the command has completed.
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1104 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1105 ;;; If the buffer looks like this:
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1106 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1107 ;;; (gdb) set args foo bar
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1108 ;;; (gdb) -!-
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1109 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1110 ;;; (the -!- marks the location of point), and we type `C-x SPC' in a
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1111 ;;; source file to set a breakpoint, we want the buffer to end up like
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1112 ;;; this:
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1113 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1114 ;;; (gdb) set args foo bar
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1115 ;;; Breakpoint 1 at 0x92: file make-docfile.c, line 49.
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1116 ;;; (gdb) -!-
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1117 ;;; --------------------
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1118 ;;; Essentially, the old prompt is deleted, and the command's output
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1119 ;;; and the new prompt take its place.
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1120 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1121 ;;; Not echoing the command is easy enough; you send it directly using
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1122 ;;; process-send-string, and it never enters the buffer. However,
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1123 ;;; getting rid of the old prompt is trickier; you don't want to do it
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1124 ;;; when you send the command, since that will result in an annoying
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1125 ;;; flicker as the prompt is deleted, redisplay occurs while Emacs
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1126 ;;; waits for a response from the debugger, and the new prompt is
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1127 ;;; inserted. Instead, we'll wait until we actually get some output
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1128 ;;; from the subprocess before we delete the prompt. If the command
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1129 ;;; produced no output other than a new prompt, that prompt will most
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1130 ;;; likely be in the first chunk of output received, so we will delete
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1131 ;;; the prompt and then replace it with an identical one. If the
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1132 ;;; command produces output, the prompt is moving anyway, so the
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1133 ;;; flicker won't be annoying.
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1134 ;;;
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1135 ;;; So - when we want to delete the prompt upon receipt of the next
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1136 ;;; chunk of debugger output, we position gud-delete-prompt-marker at
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1137 ;;; the start of the prompt; the process filter will notice this, and
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1138 ;;; delete all text between it and the process output marker. If
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1139 ;;; gud-delete-prompt-marker points nowhere, we leave the current
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1140 ;;; prompt alone.
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1141 (defvar gud-delete-prompt-marker nil)
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1142
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1143
17658
c8e002cdebb2 (gud-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 16843
diff changeset
1144 (put 'gud-mode 'mode-class 'special)
c8e002cdebb2 (gud-mode): Add a mode-class property.
Richard M. Stallman <rms@gnu.org>
parents: 16843
diff changeset
1145
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1146 (defun gud-mode ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1147 "Major mode for interacting with an inferior debugger process.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1148
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1149 You start it up with one of the commands M-x gdb, M-x sdb, M-x dbx,
14934
e0c9d34141dd (gud-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1150 M-x perldb, or M-x xdb. Each entry point finishes by executing a
e0c9d34141dd (gud-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1151 hook; `gdb-mode-hook', `sdb-mode-hook', `dbx-mode-hook',
e0c9d34141dd (gud-mode): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1152 `perldb-mode-hook', or `xdb-mode-hook' respectively.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1153
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1154 After startup, the following commands are available in both the GUD
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1155 interaction buffer and any source buffer GUD visits due to a breakpoint stop
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1156 or step operation:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1157
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1158 \\[gud-break] sets a breakpoint at the current file and line. In the
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1159 GUD buffer, the current file and line are those of the last breakpoint or
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1160 step. In a source buffer, they are the buffer's file and current line.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1161
2532
17a6b6d079cf (gud-mode): Created C-c synonym bindings in the GUD buffer's local map.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2519
diff changeset
1162 \\[gud-remove] removes breakpoints on the current file and line.
17a6b6d079cf (gud-mode): Created C-c synonym bindings in the GUD buffer's local map.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2519
diff changeset
1163
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1164 \\[gud-refresh] displays in the source window the last line referred to
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1165 in the gud buffer.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1166
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1167 \\[gud-step], \\[gud-next], and \\[gud-stepi] do a step-one-line,
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1168 step-one-line (not entering function calls), and step-one-instruction
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1169 and then update the source window with the current file and position.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1170 \\[gud-cont] continues execution.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1171
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1172 \\[gud-print] tries to find the largest C lvalue or function-call expression
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1173 around point, and sends it to the debugger for value display.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1174
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1175 The above commands are common to all supported debuggers except xdb which
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1176 does not support stepping instructions.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1177
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1178 Under gdb, sdb and xdb, \\[gud-tbreak] behaves exactly like \\[gud-break],
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1179 except that the breakpoint is temporary; that is, it is removed when
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1180 execution stops on it.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1181
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1182 Under gdb, dbx, and xdb, \\[gud-up] pops up through an enclosing stack
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1183 frame. \\[gud-down] drops back down through one.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1184
3738
c5ebd279e007 (xdb): New debugger supported (xdb under HPUX-PARISC).
Richard M. Stallman <rms@gnu.org>
parents: 3646
diff changeset
1185 If you are using gdb or xdb, \\[gud-finish] runs execution to the return from
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1186 the current function and stops.
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1187
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1188 All the keystrokes above are accessible in the GUD buffer
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1189 with the prefix C-c, and in all buffers through the prefix C-x C-a.
2532
17a6b6d079cf (gud-mode): Created C-c synonym bindings in the GUD buffer's local map.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2519
diff changeset
1190
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1191 All pre-defined functions for which the concept make sense repeat
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1192 themselves the appropriate number of times if you give a prefix
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1193 argument.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1194
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1195 You may use the `gud-def' macro in the initialization hook to define other
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1196 commands.
868
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1197
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1198 Other commands for interacting with the debugger process are inherited from
0cda1f7b154e *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 810
diff changeset
1199 comint mode, which see."
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1200 (interactive)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1201 (comint-mode)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1202 (setq major-mode 'gud-mode)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1203 (setq mode-name "Debugger")
7074
b9d86b8e3ca1 (gud-mode, gud-sentinel):
Richard M. Stallman <rms@gnu.org>
parents: 7009
diff changeset
1204 (setq mode-line-process '(":%s"))
12002
9d22f732d7d8 (gud-make-debug-menu): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11960
diff changeset
1205 (use-local-map comint-mode-map)
9d22f732d7d8 (gud-make-debug-menu): New function.
Karl Heuer <kwzh@gnu.org>
parents: 11960
diff changeset
1206 (gud-make-debug-menu)
5997
6187a2560211 (gud-mode): Define C-c C-l in gud buffer.
Richard M. Stallman <rms@gnu.org>
parents: 5508
diff changeset
1207 (define-key (current-local-map) "\C-c\C-l" 'gud-refresh)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1208 (make-local-variable 'gud-last-frame)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1209 (setq gud-last-frame nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1210 (make-local-variable 'comint-prompt-regexp)
16327
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1211 ;; Don't put repeated commands in command history many times.
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1212 (make-local-variable 'comint-input-ignoredups)
2239440f2f00 (gud-perldb-massage-args): Handle -e in ARGS.
Richard M. Stallman <rms@gnu.org>
parents: 16250
diff changeset
1213 (setq comint-input-ignoredups t)
6997
efca30974157 (gdb, sdb, dbx, xdb, perldb): Set paragraph-start.
Richard M. Stallman <rms@gnu.org>
parents: 6821
diff changeset
1214 (make-local-variable 'paragraph-start)
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1215 (make-local-variable 'gud-delete-prompt-marker)
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1216 (setq gud-delete-prompt-marker (make-marker))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1217 (run-hooks 'gud-mode-hook))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1218
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1219 ;; Chop STRING into words separated by SPC or TAB and return a list of them.
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1220 (defun gud-chop-words (string)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1221 (let ((i 0) (beg 0)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1222 (len (length string))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1223 (words nil))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1224 (while (< i len)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1225 (if (memq (aref string i) '(?\t ? ))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1226 (progn
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1227 (setq words (cons (substring string beg i) words)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1228 beg (1+ i))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1229 (while (and (< beg len) (memq (aref string beg) '(?\t ? )))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1230 (setq beg (1+ beg)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1231 (setq i (1+ beg)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1232 (setq i (1+ i))))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1233 (if (< beg len)
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1234 (setq words (cons (substring string beg) words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1235 (nreverse words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1236
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1237 ;; Perform initializations common to all debuggers.
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1238 ;; The first arg is the specified command line,
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1239 ;; which starts with the program to debug.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1240 ;; The other three args specify the values to use
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1241 ;; for local variables in the debugger buffer.
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1242 (defun gud-common-init (command-line massage-args marker-filter find-file)
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1243 (let* ((words (gud-chop-words command-line))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1244 (program (car words))
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1245 ;; Extract the file name from WORDS
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1246 ;; and put t in its place.
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1247 ;; Later on we will put the modified file name arg back there.
4092
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1248 (file-word (let ((w (cdr words)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1249 (while (and w (= ?- (aref (car w) 0)))
e72012acb5fb (gud-debugger-startup): Replaced with gud-massage-args.
Roland McGrath <roland@gnu.org>
parents: 4016
diff changeset
1250 (setq w (cdr w)))
11930
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
1251 (and w
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
1252 (prog1 (car w)
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
1253 (setcar w t)))))
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1254 (file-subst
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1255 (and file-word (substitute-in-file-name file-word)))
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1256 (args (cdr words))
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1257 ;; If a directory was specified, expand the file name.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1258 ;; Otherwise, don't expand it, so GDB can use the PATH.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1259 ;; A file name without directory is literally valid
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1260 ;; only if the file exists in ., and in that case,
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1261 ;; omitting the expansion here has no visible effect.
5508
67db1f804162 (gud-common-init): Don't crash if no file specified.
Richard M. Stallman <rms@gnu.org>
parents: 5264
diff changeset
1262 (file (and file-word
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1263 (if (file-name-directory file-subst)
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1264 (expand-file-name file-subst)
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1265 file-subst)))
11930
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
1266 (filepart (and file-word (concat "-" (file-name-nondirectory file)))))
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
1267 (switch-to-buffer (concat "*gud" filepart "*"))
9743
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1268 ;; Set default-directory to the file's directory.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1269 (and file-word
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1270 ;; Don't set default-directory if no directory was specified.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1271 ;; In that case, either the file is found in the current directory,
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1272 ;; in which case this setq is a no-op,
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1273 ;; or it is found by searching PATH,
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1274 ;; in which case we don't know what directory it was found in.
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1275 (file-name-directory file)
6a97ed1cc733 (gud-common-init): If file arg has no directory,
Richard M. Stallman <rms@gnu.org>
parents: 9695
diff changeset
1276 (setq default-directory (file-name-directory file)))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1277 (or (bolp) (newline))
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1278 (insert "Current directory is " default-directory "\n")
10876
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1279 ;; Put the substituted and expanded file name back in its place.
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1280 (let ((w args))
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1281 (while (and w (not (eq (car w) t)))
715419786d7f (gud-common-init): Put substed file name back in original
Richard M. Stallman <rms@gnu.org>
parents: 10518
diff changeset
1282 (setq w (cdr w)))
11930
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
1283 (if w
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
1284 (setcar w file)))
d86841220451 (gud-common-init): Don't die if filename not supplied.
Karl Heuer <kwzh@gnu.org>
parents: 11583
diff changeset
1285 (apply 'make-comint (concat "gud" filepart) program nil
12116
1df1abcd466f (gud-common-init): Call the MASSAGE-ARGS function even if FILE is nil.
Roland McGrath <roland@gnu.org>
parents: 12032
diff changeset
1286 (funcall massage-args file args)))
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1287 ;; Since comint clobbered the mode, we don't set it until now.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1288 (gud-mode)
9190
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1289 (make-local-variable 'gud-marker-filter)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1290 (setq gud-marker-filter marker-filter)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1291 (make-local-variable 'gud-find-file)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1292 (setq gud-find-file find-file)
4e66c15e2d6c (gud-overload-functions): Function deleted.
Richard M. Stallman <rms@gnu.org>
parents: 8645
diff changeset
1293
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1294 (set-process-filter (get-buffer-process (current-buffer)) 'gud-filter)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1295 (set-process-sentinel (get-buffer-process (current-buffer)) 'gud-sentinel)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1296 (gud-set-buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1297 )
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1298
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1299 (defun gud-set-buffer ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1300 (cond ((eq major-mode 'gud-mode)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1301 (setq gud-comint-buffer (current-buffer)))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1302
13003
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1303 (defvar gud-filter-defer-flag nil
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1304 "Non-nil means don't process anything from the debugger right now.
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1305 It is saved for when this flag is not set.")
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1306
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1307 (defvar gud-filter-pending-text nil
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1308 "Non-nil means this is text that has been saved for later in `gud-filter'.")
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1309
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1310 ;; These functions are responsible for inserting output from your debugger
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1311 ;; into the buffer. The hard work is done by the method that is
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1312 ;; the value of gud-marker-filter.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1313
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1314 (defun gud-filter (proc string)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1315 ;; Here's where the actual buffer insertion is done
13190
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
1316 (let (output process-window)
9519
c7925093b270 (gud-filter): Don't bind inhibit-quit.
Richard M. Stallman <rms@gnu.org>
parents: 9191
diff changeset
1317 (if (buffer-name (process-buffer proc))
13003
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1318 (if gud-filter-defer-flag
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1319 ;; If we can't process any text now,
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1320 ;; save it for later.
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1321 (setq gud-filter-pending-text
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1322 (concat (or gud-filter-pending-text "") string))
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1323
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1324 ;; If we have to ask a question during the processing,
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1325 ;; defer any additional text that comes from the debugger
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1326 ;; during that time.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1327 (let ((gud-filter-defer-flag t))
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1328 ;; Process now any text we previously saved up.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1329 (if gud-filter-pending-text
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1330 (setq string (concat gud-filter-pending-text string)
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1331 gud-filter-pending-text nil))
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1332 (save-excursion
13003
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1333 (set-buffer (process-buffer proc))
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1334 ;; If we have been so requested, delete the debugger prompt.
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1335 (if (marker-buffer gud-delete-prompt-marker)
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1336 (progn
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1337 (delete-region (process-mark proc) gud-delete-prompt-marker)
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1338 (set-marker gud-delete-prompt-marker nil)))
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1339 ;; Save the process output, checking for source file markers.
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1340 (setq output (gud-marker-filter string))
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1341 ;; Check for a filename-and-line number.
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1342 ;; Don't display the specified file
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1343 ;; unless (1) point is at or after the position where output appears
4711396531e8 (gud-filter): Save up text that arrives while processing previous text.
Richard M. Stallman <rms@gnu.org>
parents: 12743
diff changeset
1344 ;; and (2) this buffer is on the screen.
13190
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
1345 (setq process-window
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
1346 (and gud-last-frame
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
1347 (>= (point) (process-mark proc))
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1348 (get-buffer-window (current-buffer))))
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1349
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1350 ;; Let the comint filter do the actual insertion.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1351 ;; That lets us inherit various comint features.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1352 (comint-output-filter proc output)))
13190
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
1353
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1354 ;; Put the arrow on the source line.
15199
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1355 ;; This must be outside of the save-excursion
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1356 ;; in case the source file is our current buffer.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1357 (if process-window
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1358 (save-selected-window
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1359 (select-window process-window)
15199
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1360 (gud-display-frame))
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1361 ;; We have to be in the proper buffer, (process-buffer proc),
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1362 ;; but not in a save-excursion, because that would restore point.
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1363 (let ((old-buf (current-buffer)))
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1364 (set-buffer (process-buffer proc))
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1365 (unwind-protect
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1366 (gud-display-frame)
c595cb576143 (gud-filter): Cal gud-display-frame even if process-window is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15185
diff changeset
1367 (set-buffer old-buf))))
13190
1e174c7e3a00 (gud-filter): Move the gud-display-frame call
Richard M. Stallman <rms@gnu.org>
parents: 13003
diff changeset
1368
15185
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1369 ;; If we deferred text that arrived during this processing,
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1370 ;; handle it now.
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1371 (if gud-filter-pending-text
44305fd68269 (gud-filter): Move the call to gud-display-frame
Richard M. Stallman <rms@gnu.org>
parents: 15127
diff changeset
1372 (gud-filter proc ""))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1373
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1374 (defun gud-sentinel (proc msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1375 (cond ((null (buffer-name (process-buffer proc)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1376 ;; buffer killed
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1377 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1378 (setq overlay-arrow-position nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1379 (set-process-buffer proc nil))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1380 ((memq (process-status proc) '(signal exit))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1381 ;; Stop displaying an arrow in a source file.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1382 (setq overlay-arrow-position nil)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1383 ;; Fix the mode line.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1384 (setq mode-line-process
7074
b9d86b8e3ca1 (gud-mode, gud-sentinel):
Richard M. Stallman <rms@gnu.org>
parents: 7009
diff changeset
1385 (concat ":"
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1386 (symbol-name (process-status proc))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1387 (let* ((obuf (current-buffer)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1388 ;; save-excursion isn't the right thing if
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1389 ;; process-buffer is current-buffer
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1390 (unwind-protect
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1391 (progn
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1392 ;; Write something in *compilation* and hack its mode line,
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1393 (set-buffer (process-buffer proc))
11583
b481316dd562 (gud-sentinel): Use force-mode-line-update.
Karl Heuer <kwzh@gnu.org>
parents: 11235
diff changeset
1394 (force-mode-line-update)
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1395 (if (eobp)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1396 (insert ?\n mode-name " " msg)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1397 (save-excursion
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1398 (goto-char (point-max))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1399 (insert ?\n mode-name " " msg)))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1400 ;; If buffer and mode line will show that the process
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1401 ;; is dead, we can delete it now. Otherwise it
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1402 ;; will stay around until M-x list-processes.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1403 (delete-process proc))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1404 ;; Restore old buffer, but don't restore old point
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1405 ;; if obuf is the gud buffer.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1406 (set-buffer obuf))))))
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1407
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1408 (defun gud-display-frame ()
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1409 "Find and obey the last filename-and-line marker from the debugger.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1410 Obeying it means displaying in another window the specified file and line."
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1411 (interactive)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1412 (if gud-last-frame
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1413 (progn
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1414 (gud-set-buffer)
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1415 (gud-display-line (car gud-last-frame) (cdr gud-last-frame))
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
1416 (setq gud-last-last-frame gud-last-frame
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
1417 gud-last-frame nil))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1418
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1419 ;; Make sure the file named TRUE-FILE is in a buffer that appears on the screen
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1420 ;; and that its line LINE is visible.
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1421 ;; Put the overlay-arrow on the line LINE in that buffer.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1422 ;; Most of the trickiness in here comes from wanting to preserve the current
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1423 ;; region-restriction if that's possible. We use an explicit display-buffer
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1424 ;; to get around the fact that this is called inside a save-excursion.
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1425
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1426 (defun gud-display-line (true-file line)
7910
842db6d87566 (gud-massage-args): Fix error message syntax.
Richard M. Stallman <rms@gnu.org>
parents: 7741
diff changeset
1427 (let* ((last-nonmenu-event t) ; Prevent use of dialog box for questions.
15127
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
1428 (buffer
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
1429 (save-excursion
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
1430 (or (eq (current-buffer) gud-comint-buffer)
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
1431 (set-buffer gud-comint-buffer))
654bc3990b4d (gud-display-line): Switch to gud buffer before calling gud-find-file.
Richard M. Stallman <rms@gnu.org>
parents: 14934
diff changeset
1432 (gud-find-file true-file)))
16250
aaa0ecdc4772 (gud-display-line): Don't call display-buffer
Richard M. Stallman <rms@gnu.org>
parents: 16185
diff changeset
1433 (window (and buffer (or (get-buffer-window buffer)
aaa0ecdc4772 (gud-display-line): Don't call display-buffer
Richard M. Stallman <rms@gnu.org>
parents: 16185
diff changeset
1434 (display-buffer buffer))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1435 (pos))
15796
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1436 (if buffer
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1437 (progn
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1438 (save-excursion
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1439 (set-buffer buffer)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1440 (save-restriction
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1441 (widen)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1442 (goto-line line)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1443 (setq pos (point))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1444 (setq overlay-arrow-string "=>")
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1445 (or overlay-arrow-position
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1446 (setq overlay-arrow-position (make-marker)))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1447 (set-marker overlay-arrow-position (point) (current-buffer)))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1448 (cond ((or (< pos (point-min)) (> pos (point-max)))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1449 (widen)
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1450 (goto-char pos))))
0cddfd1a946e (gud-display-line): Don't crash if BUFFER is nil.
Richard M. Stallman <rms@gnu.org>
parents: 15755
diff changeset
1451 (set-window-point window overlay-arrow-position)))))
1256
ff24725192d3 * gud.el: When we send a command to the debugger via gud-call,
Jim Blandy <jimb@redhat.com>
parents: 1255
diff changeset
1452
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1453 ;;; The gud-call function must do the right thing whether its invoking
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1454 ;;; keystroke is from the GUD buffer itself (via major-mode binding)
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
1455 ;;; or a C buffer. In the former case, we want to supply data from
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
1456 ;;; gud-last-frame. Here's how we do it:
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1457
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1458 (defun gud-format-command (str arg)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1459 (let ((insource (not (eq (current-buffer) gud-comint-buffer)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1460 (frame (or gud-last-frame gud-last-last-frame))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1461 result)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1462 (while (and str (string-match "\\([^%]*\\)%\\([adeflp]\\)" str))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1463 (let ((key (string-to-char (substring str (match-beginning 2))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1464 subst)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1465 (cond
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1466 ((eq key ?f)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1467 (setq subst (file-name-nondirectory (if insource
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1468 (buffer-file-name)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1469 (car frame)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1470 ((eq key ?d)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1471 (setq subst (file-name-directory (if insource
4344
be116c77da2f (dbx): Use %d in gud-break.
Richard M. Stallman <rms@gnu.org>
parents: 4335
diff changeset
1472 (buffer-file-name)
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1473 (car frame)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1474 ((eq key ?l)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1475 (setq subst (if insource
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1476 (save-excursion
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1477 (beginning-of-line)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1478 (save-restriction (widen)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1479 (1+ (count-lines 1 (point)))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1480 (cdr frame))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1481 ((eq key ?e)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1482 (setq subst (gud-find-c-expr)))
5264
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1483 ((eq key ?a)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1484 (setq subst (gud-read-address)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1485 ((eq key ?p)
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1486 (setq subst (if arg (int-to-string arg) ""))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1487 (setq result (concat result
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1488 (substring str (match-beginning 1) (match-end 1))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1489 subst)))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1490 (setq str (substring str (match-end 2))))
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1491 ;; There might be text left in STR when the loop ends.
a60a8979d34b (gud-format-command): Rewrite.
Richard M. Stallman <rms@gnu.org>
parents: 4818
diff changeset
1492 (concat result str)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1493
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1494 (defun gud-read-address ()
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1495 "Return a string containing the core-address found in the buffer at point."
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1496 (save-excursion
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1497 (let ((pt (point)) found begin)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1498 (setq found (if (search-backward "0x" (- pt 7) t) (point)))
1255
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1499 (cond
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1500 (found (forward-char 2)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1501 (buffer-substring found
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1502 (progn (re-search-forward "[^0-9a-f]")
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1503 (forward-char -1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1504 (point))))
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1505 (t (setq begin (progn (re-search-backward "[^0-9]")
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1506 (forward-char 1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1507 (point)))
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1508 (forward-char 1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1509 (re-search-forward "[^0-9]")
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1510 (forward-char -1)
ff06503c93b4 * gud.el (gud-def): Doc fix.
Jim Blandy <jimb@redhat.com>
parents: 923
diff changeset
1511 (buffer-substring begin (point)))))))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1512
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1513 (defun gud-call (fmt &optional arg)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1514 (let ((msg (gud-format-command fmt arg)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1515 (message "Command: %s" msg)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1516 (sit-for 0)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1517 (gud-basic-call msg)))
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1518
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1519 (defun gud-basic-call (command)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1520 "Invoke the debugger COMMAND displaying source in other window."
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1521 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1522 (gud-set-buffer)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1523 (let ((command (concat command "\n"))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1524 (proc (get-buffer-process gud-comint-buffer)))
10095
ace8ae9f015f (gud-basic-call): Detect error earlier.
Karl Heuer <kwzh@gnu.org>
parents: 10042
diff changeset
1525 (or proc (error "Current buffer has no process"))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1526 ;; Arrange for the current prompt to get deleted.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1527 (save-excursion
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1528 (set-buffer gud-comint-buffer)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1529 (goto-char (process-mark proc))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1530 (beginning-of-line)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1531 (if (looking-at comint-prompt-regexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1532 (set-marker gud-delete-prompt-marker (point))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1533 (process-send-string proc command)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1534
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1535 (defun gud-refresh (&optional arg)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1536 "Fix up a possibly garbled display, and redraw the arrow."
460
c103b99fd872 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1537 (interactive "P")
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1538 (recenter arg)
3646
4b34cbec2058 * gud.el (gud-last-last-frame): New variable.
Jim Blandy <jimb@redhat.com>
parents: 3591
diff changeset
1539 (or gud-last-frame (setq gud-last-frame gud-last-last-frame))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1540 (gud-display-frame))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1541
16405
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1542
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1543 (defun gud-new-keymap (map)
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1544 "Return a new keymap which inherits from MAP and has name `Gud'."
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1545 (nconc (make-sparse-keymap "Gud") map))
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1546
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1547 (defun gud-make-debug-menu ()
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1548 "Make sure the current local map has a [menu-bar debug] submap.
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1549 If it doesn't, replace it with a new map that inherits it,
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1550 and create such a submap in that new map."
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1551 (if (and (current-local-map)
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1552 (lookup-key (current-local-map) [menu-bar debug]))
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1553 nil
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1554 (use-local-map (gud-new-keymap (current-local-map)))
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1555 (define-key (current-local-map) [menu-bar debug]
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1556 (cons "Gud" (gud-new-keymap gud-menu-map)))))
1fb8e3c7cc03 Move two function definitions.
Richard M. Stallman <rms@gnu.org>
parents: 16362
diff changeset
1557
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1558 ;;; Code for parsing expressions out of C code. The single entry point is
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1559 ;;; find-c-expr, which tries to return an lvalue expression from around point.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1560 ;;;
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1561 ;;; The rest of this file is a hacked version of gdbsrc.el by
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1562 ;;; Debby Ayers <ayers@asc.slb.com>,
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1563 ;;; Rich Schaefer <schaefer@asc.slb.com> Schlumberger, Austin, Tx.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1564
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1565 (defun gud-find-c-expr ()
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1566 "Returns the C expr that surrounds point."
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1567 (interactive)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1568 (save-excursion
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1569 (let (p expr test-expr)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1570 (setq p (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1571 (setq expr (gud-innermost-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1572 (setq test-expr (gud-prev-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1573 (while (and test-expr (gud-expr-compound test-expr expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1574 (let ((prev-expr expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1575 (setq expr (cons (car test-expr) (cdr expr)))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1576 (goto-char (car expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1577 (setq test-expr (gud-prev-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1578 ;; If we just pasted on the condition of an if or while,
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1579 ;; throw it away again.
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1580 (if (member (buffer-substring (car test-expr) (cdr test-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1581 '("if" "while" "for"))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1582 (setq test-expr nil
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1583 expr prev-expr))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1584 (goto-char p)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1585 (setq test-expr (gud-next-expr))
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1586 (while (gud-expr-compound expr test-expr)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1587 (setq expr (cons (car expr) (cdr test-expr)))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1588 (setq test-expr (gud-next-expr))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1589 )
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1590 (buffer-substring (car expr) (cdr expr)))))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1591
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1592 (defun gud-innermost-expr ()
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1593 "Returns the smallest expr that point is in; move point to beginning of it.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1594 The expr is represented as a cons cell, where the car specifies the point in
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1595 the current buffer that marks the beginning of the expr and the cdr specifies
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1596 the character after the end of the expr."
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1597 (let ((p (point)) begin end)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1598 (gud-backward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1599 (setq begin (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1600 (gud-forward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1601 (setq end (point))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1602 (if (>= p end)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1603 (progn
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1604 (setq begin p)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1605 (goto-char p)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1606 (gud-forward-sexp)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1607 (setq end (point)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1608 )
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1609 (goto-char begin)
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1610 (cons begin end)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1611
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1612 (defun gud-backward-sexp ()
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1613 "Version of `backward-sexp' that catches errors."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1614 (condition-case nil
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1615 (backward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1616 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1617
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1618 (defun gud-forward-sexp ()
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1619 "Version of `forward-sexp' that catches errors."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1620 (condition-case nil
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1621 (forward-sexp)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1622 (error t)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1623
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1624 (defun gud-prev-expr ()
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1625 "Returns the previous expr, point is set to beginning of that expr.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1626 The expr is represented as a cons cell, where the car specifies the point in
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1627 the current buffer that marks the beginning of the expr and the cdr specifies
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1628 the character after the end of the expr"
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1629 (let ((begin) (end))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1630 (gud-backward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1631 (setq begin (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1632 (gud-forward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1633 (setq end (point))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1634 (goto-char begin)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1635 (cons begin end)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1636
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1637 (defun gud-next-expr ()
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1638 "Returns the following expr, point is set to beginning of that expr.
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1639 The expr is represented as a cons cell, where the car specifies the point in
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1640 the current buffer that marks the beginning of the expr and the cdr specifies
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1641 the character after the end of the expr."
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1642 (let ((begin) (end))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1643 (gud-forward-sexp)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1644 (gud-forward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1645 (setq end (point))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1646 (gud-backward-sexp)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1647 (setq begin (point))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1648 (cons begin end)))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1649
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1650 (defun gud-expr-compound-sep (span-start span-end)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1651 "Scan from SPAN-START to SPAN-END for punctuation characters.
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1652 If `->' is found, return `?.'. If `.' is found, return `?.'.
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1653 If any other punctuation is found, return `??'.
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1654 If no punctuation is found, return `? '."
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1655 (let ((result ?\ )
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1656 (syntax))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1657 (while (< span-start span-end)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1658 (setq syntax (char-syntax (char-after span-start)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1659 (cond
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1660 ((= syntax ?\ ) t)
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1661 ((= syntax ?.) (setq syntax (char-after span-start))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1662 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1663 ((= syntax ?.) (setq result ?.))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1664 ((and (= syntax ?-) (= (char-after (+ span-start 1)) ?>))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1665 (setq result ?.)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1666 (setq span-start (+ span-start 1)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1667 (t (setq span-start span-end)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1668 (setq result ??)))))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1669 (setq span-start (+ span-start 1)))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1670 result))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1671
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1672 (defun gud-expr-compound (first second)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1673 "Non-nil if concatenating FIRST and SECOND makes a single C expression.
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1674 The two exprs are represented as a cons cells, where the car
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1675 specifies the point in the current buffer that marks the beginning of the
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1676 expr and the cdr specifies the character after the end of the expr.
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1677 Link exprs of the form:
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1678 Expr -> Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1679 Expr . Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1680 Expr (Expr)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1681 Expr [Expr]
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1682 (Expr) Expr
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1683 [Expr] Expr"
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1684 (let ((span-start (cdr first))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1685 (span-end (car second))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1686 (syntax))
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1687 (setq syntax (gud-expr-compound-sep span-start span-end))
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1688 (cond
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1689 ((= (car first) (car second)) nil)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1690 ((= (cdr first) (cdr second)) nil)
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1691 ((= syntax ?.) t)
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1692 ((= syntax ?\ )
2489
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1693 (setq span-start (char-after (- span-start 1)))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1694 (setq span-end (char-after span-end))
b626f5b9a0df Massive changes, amounting nearly to a rewrite. The new features
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1902
diff changeset
1695 (cond
16185
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1696 ((= span-start ?)) t)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1697 ((= span-start ?]) t)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1698 ((= span-end ?() t)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1699 ((= span-end ?[) t)
fdb78e6e5701 (gud-find-c-expr): Renamed from find-c-expr.
Richard M. Stallman <rms@gnu.org>
parents: 15819
diff changeset
1700 (t nil)))
3551
8b5fa2d1755f Doc fixes. Delete local variable list at the end.
Richard M. Stallman <rms@gnu.org>
parents: 3343
diff changeset
1701 (t nil))))
2581
839d67a1dc58 Set no-byte-compile local variable t to work around a byte-compiler bug.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2532
diff changeset
1702
4016
27d35763dda9 Add (provide 'gud).
Roland McGrath <roland@gnu.org>
parents: 3930
diff changeset
1703 (provide 'gud)
27d35763dda9 Add (provide 'gud).
Roland McGrath <roland@gnu.org>
parents: 3930
diff changeset
1704
810
80303373daae *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 806
diff changeset
1705 ;;; gud.el ends here