15 |
|
|
16 |
;; GNU Emacs is distributed in the hope that it will be useful, |
;; GNU Emacs is distributed in the hope that it will be useful, |
17 |
;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
;; but WITHOUT ANY WARRANTY; without even the implied warranty of |
18 |
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
19 |
;; GNU General Public License for more details. |
;; GNU General Public License for more details. |
20 |
|
|
21 |
;; You should have received a copy of the GNU General Public License |
;; You should have received a copy of the GNU General Public License |
22 |
;; along with GNU Emacs; see the file COPYING. If not, write to the |
;; along with GNU Emacs; see the file COPYING. If not, write to the |
23 |
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
24 |
;; Boston, MA 02111-1307, USA. |
;; Boston, MA 02111-1307, USA. |
25 |
|
|
34 |
;; wrote the GDB command completion code. Dave Love <d.love@dl.ac.uk> |
;; wrote the GDB command completion code. Dave Love <d.love@dl.ac.uk> |
35 |
;; added the IRIX kluge, re-implemented the Mips-ish variant and added |
;; added the IRIX kluge, re-implemented the Mips-ish variant and added |
36 |
;; a menu. Brian D. Carlstrom <bdc@ai.mit.edu> combined the IRIX kluge with |
;; a menu. Brian D. Carlstrom <bdc@ai.mit.edu> combined the IRIX kluge with |
37 |
;; the gud-xdb-directories hack producing gud-dbx-directories. Derek L. Davies |
;; the gud-xdb-directories hack producing gud-dbx-directories. Derek L. Davies |
38 |
;; <ddavies@world.std.com> added support for jdb (Java debugger.) |
;; <ddavies@world.std.com> added support for jdb (Java debugger.) |
39 |
|
|
40 |
;;; Code: |
;;; Code: |
140 |
;; A macro call like (gud-def FUNC NAME KEY DOC) expands to a form |
;; A macro call like (gud-def FUNC NAME KEY DOC) expands to a form |
141 |
;; which defines FUNC to send the command NAME to the debugger, gives |
;; which defines FUNC to send the command NAME to the debugger, gives |
142 |
;; it the docstring DOC, and binds that function to KEY in the GUD |
;; it the docstring DOC, and binds that function to KEY in the GUD |
143 |
;; major mode. The function is also bound in the global keymap with the |
;; major mode. The function is also bound in the global keymap with the |
144 |
;; GUD prefix. |
;; GUD prefix. |
145 |
|
|
146 |
(defmacro gud-def (func cmd key &optional doc) |
(defmacro gud-def (func cmd key &optional doc) |
148 |
optional doc string DOC. Certain %-escapes in the string arguments |
optional doc string DOC. Certain %-escapes in the string arguments |
149 |
are interpreted specially if present. These are: |
are interpreted specially if present. These are: |
150 |
|
|
151 |
%f name (without directory) of current source file. |
%f name (without directory) of current source file. |
152 |
%F name (without directory or extension) of current source file. |
%F name (without directory or extension) of current source file. |
153 |
%d directory of current source file. |
%d directory of current source file. |
154 |
%l number of current source line |
%l number of current source line |
155 |
%e text of the C lvalue or function-call expression surrounding point. |
%e text of the C lvalue or function-call expression surrounding point. |
156 |
%a text of the hexadecimal address surrounding point |
%a text of the hexadecimal address surrounding point |
157 |
%p prefix argument to the command (if any) as a number |
%p prefix argument to the command (if any) as a number |
158 |
|
|
159 |
The `current' source file is the file of the current buffer (if |
The `current' source file is the file of the current buffer (if |
160 |
we're in a C file) or the source file current at the last break or |
we're in a C file) or the source file current at the last break or |
209 |
;; the rest. |
;; the rest. |
210 |
;; |
;; |
211 |
;; The job of the find-file method is to visit and return the buffer indicated |
;; The job of the find-file method is to visit and return the buffer indicated |
212 |
;; by the car of gud-tag-frame. This may be a file name, a tag name, or |
;; by the car of gud-tag-frame. This may be a file name, a tag name, or |
213 |
;; something else. |
;; something else. |
214 |
|
|
215 |
;; ====================================================================== |
;; ====================================================================== |
401 |
(gud-def gud-break "break %f:%l" "\C-b" "Set breakpoint at current line.") |
(gud-def gud-break "break %f:%l" "\C-b" "Set breakpoint at current line.") |
402 |
(gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line.") |
(gud-def gud-tbreak "tbreak %f:%l" "\C-t" "Set temporary breakpoint at current line.") |
403 |
(gud-def gud-remove "clear %f:%l" "\C-d" "Remove breakpoint at current line") |
(gud-def gud-remove "clear %f:%l" "\C-d" "Remove breakpoint at current line") |
404 |
(gud-def gud-step "step %p" "\C-s" "Step one source line with display.") |
(gud-def gud-step "step %p" "\C-s" "Step one source line with display.") |
405 |
(gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.") |
(gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.") |
406 |
(gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).") |
(gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).") |
407 |
(gud-def gud-cont "cont" "\C-r" "Continue with display.") |
(gud-def gud-cont "cont" "\C-r" "Continue with display.") |
408 |
(gud-def gud-finish "finish" "\C-f" "Finish executing current function.") |
(gud-def gud-finish "finish" "\C-f" "Finish executing current function.") |
409 |
(gud-def gud-jump "tbreak %f:%l\njump %f:%l" "\C-j" "Relocate execution address to line at point in source buffer.") |
(gud-def gud-jump "tbreak %f:%l\njump %f:%l" "\C-j" "Relocate execution address to line at point in source buffer.") |
410 |
|
|
411 |
(gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).") |
(gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).") |
412 |
(gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).") |
(gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).") |
413 |
(gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.") |
(gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.") |
414 |
|
|
415 |
(local-set-key "\C-i" 'gud-gdb-complete-command) |
(local-set-key "\C-i" 'gud-gdb-complete-command) |
833 |
|
|
834 |
;; Does the remaining text look like it might end with the |
;; Does the remaining text look like it might end with the |
835 |
;; beginning of another marker? If it does, then keep it in |
;; beginning of another marker? If it does, then keep it in |
836 |
;; gud-marker-acc until we receive the rest of it. Since we |
;; gud-marker-acc until we receive the rest of it. Since we |
837 |
;; know the full marker regexp above failed, it's pretty simple to |
;; know the full marker regexp above failed, it's pretty simple to |
838 |
;; test for marker starts. |
;; test for marker starts. |
839 |
(if (string-match "[][ 0-9]*\032.*\\'" gud-marker-acc) |
(if (string-match "[][ 0-9]*\032.*\\'" gud-marker-acc) |
853 |
|
|
854 |
;; The dbx in IRIX is a pain. It doesn't print the file name when |
;; The dbx in IRIX is a pain. It doesn't print the file name when |
855 |
;; stopping at a breakpoint (but you do get it from the `up' and |
;; stopping at a breakpoint (but you do get it from the `up' and |
856 |
;; `down' commands...). The only way to extract the information seems |
;; `down' commands...). The only way to extract the information seems |
857 |
;; to be with a `file' command, although the current line number is |
;; to be with a `file' command, although the current line number is |
858 |
;; available in $curline. Thus we have to look for output which |
;; available in $curline. Thus we have to look for output which |
859 |
;; appears to indicate a breakpoint. Then we prod the dbx sub-process |
;; appears to indicate a breakpoint. Then we prod the dbx sub-process |
909 |
(if result |
(if result |
910 |
(cond |
(cond |
911 |
;; look for breakpoint or signal indication e.g.: |
;; look for breakpoint or signal indication e.g.: |
912 |
;; [2] Process 1267 (pplot) stopped at [params:338 ,0x400ec0] |
;; [2] Process 1267 (pplot) stopped at [params:338 ,0x400ec0] |
913 |
;; Process 1281 (pplot) stopped at [params:339 ,0x400ec8] |
;; Process 1281 (pplot) stopped at [params:339 ,0x400ec8] |
914 |
;; Process 1270 (pplot) Floating point exception [._read._read:16 ,0x452188] |
;; Process 1270 (pplot) Floating point exception [._read._read:16 ,0x452188] |
915 |
((string-match |
((string-match |
1032 |
|
|
1033 |
(cond |
(cond |
1034 |
(gud-mips-p |
(gud-mips-p |
1035 |
(gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.") |
(gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.") |
1036 |
(gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.") |
(gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.") |
1037 |
(gud-def gud-break "stop at \"%f\":%l" |
(gud-def gud-break "stop at \"%f\":%l" |
1038 |
"\C-b" "Set breakpoint at current line.") |
"\C-b" "Set breakpoint at current line.") |
1039 |
(gud-def gud-finish "return" "\C-f" "Finish executing current function.")) |
(gud-def gud-finish "return" "\C-f" "Finish executing current function.")) |
1040 |
(gud-irix-p |
(gud-irix-p |
1041 |
(gud-def gud-break "stop at \"%d%f\":%l" |
(gud-def gud-break "stop at \"%d%f\":%l" |
1042 |
"\C-b" "Set breakpoint at current line.") |
"\C-b" "Set breakpoint at current line.") |
1043 |
(gud-def gud-finish "return" "\C-f" "Finish executing current function.") |
(gud-def gud-finish "return" "\C-f" "Finish executing current function.") |
1044 |
(gud-def gud-up "up %p; printf \"\032\032%1d:\",(int)$curline;file\n" |
(gud-def gud-up "up %p; printf \"\032\032%1d:\",(int)$curline;file\n" |
1049 |
(process-send-string (get-buffer-process gud-comint-buffer) |
(process-send-string (get-buffer-process gud-comint-buffer) |
1050 |
"printf \"\032\032%1d:\",(int)$curline;file\n")) |
"printf \"\032\032%1d:\",(int)$curline;file\n")) |
1051 |
(t |
(t |
1052 |
(gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.") |
(gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.") |
1053 |
(gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.") |
(gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.") |
1054 |
(gud-def gud-break "file \"%d%f\"\nstop at %l" |
(gud-def gud-break "file \"%d%f\"\nstop at %l" |
1055 |
"\C-b" "Set breakpoint at current line.") |
"\C-b" "Set breakpoint at current line.") |
1058 |
"set $stopformat=1\n")))) |
"set $stopformat=1\n")))) |
1059 |
|
|
1060 |
(gud-def gud-remove "clear %l" "\C-d" "Remove breakpoint at current line") |
(gud-def gud-remove "clear %l" "\C-d" "Remove breakpoint at current line") |
1061 |
(gud-def gud-step "step %p" "\C-s" "Step one line with display.") |
(gud-def gud-step "step %p" "\C-s" "Step one line with display.") |
1062 |
(gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.") |
(gud-def gud-stepi "stepi %p" "\C-i" "Step one instruction with display.") |
1063 |
(gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).") |
(gud-def gud-next "next %p" "\C-n" "Step one line (skip functions).") |
1064 |
(gud-def gud-cont "cont" "\C-r" "Continue with display.") |
(gud-def gud-cont "cont" "\C-r" "Continue with display.") |
1065 |
(gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.") |
(gud-def gud-print "print %e" "\C-p" "Evaluate C expression at point.") |
1066 |
|
|
1067 |
(setq comint-prompt-regexp "^[^)\n]*dbx) *") |
(setq comint-prompt-regexp "^[^)\n]*dbx) *") |
1153 |
'gud-xdb-marker-filter 'gud-xdb-find-file) |
'gud-xdb-marker-filter 'gud-xdb-find-file) |
1154 |
(set (make-local-variable 'gud-minor-mode) 'xdb) |
(set (make-local-variable 'gud-minor-mode) 'xdb) |
1155 |
|
|
1156 |
(gud-def gud-break "b %f:%l" "\C-b" "Set breakpoint at current line.") |
(gud-def gud-break "b %f:%l" "\C-b" "Set breakpoint at current line.") |
1157 |
(gud-def gud-tbreak "b %f:%l\\t" "\C-t" |
(gud-def gud-tbreak "b %f:%l\\t" "\C-t" |
1158 |
"Set temporary breakpoint at current line.") |
"Set temporary breakpoint at current line.") |
1159 |
(gud-def gud-remove "db" "\C-d" "Remove breakpoint at current line") |
(gud-def gud-remove "db" "\C-d" "Remove breakpoint at current line") |
1160 |
(gud-def gud-step "s %p" "\C-s" "Step one line with display.") |
(gud-def gud-step "s %p" "\C-s" "Step one line with display.") |
1161 |
(gud-def gud-next "S %p" "\C-n" "Step one line (skip functions).") |
(gud-def gud-next "S %p" "\C-n" "Step one line (skip functions).") |
1162 |
(gud-def gud-cont "c" "\C-r" "Continue with display.") |
(gud-def gud-cont "c" "\C-r" "Continue with display.") |
1163 |
(gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.") |
(gud-def gud-up "up %p" "<" "Up (numeric arg) stack frames.") |
1164 |
(gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.") |
(gud-def gud-down "down %p" ">" "Down (numeric arg) stack frames.") |
1165 |
(gud-def gud-finish "bu\\t" "\C-f" "Finish executing current function.") |
(gud-def gud-finish "bu\\t" "\C-f" "Finish executing current function.") |
1166 |
(gud-def gud-print "p %e" "\C-p" "Evaluate C expression at point.") |
(gud-def gud-print "p %e" "\C-p" "Evaluate C expression at point.") |
1167 |
|
|
1168 |
(setq comint-prompt-regexp "^>") |
(setq comint-prompt-regexp "^>") |
1169 |
(setq paragraph-start comint-prompt-regexp) |
(setq paragraph-start comint-prompt-regexp) |
1293 |
'gud-perldb-marker-filter 'gud-perldb-find-file) |
'gud-perldb-marker-filter 'gud-perldb-find-file) |
1294 |
(set (make-local-variable 'gud-minor-mode) 'perldb) |
(set (make-local-variable 'gud-minor-mode) 'perldb) |
1295 |
|
|
1296 |
(gud-def gud-break "b %l" "\C-b" "Set breakpoint at current line.") |
(gud-def gud-break "b %l" "\C-b" "Set breakpoint at current line.") |
1297 |
(gud-def gud-remove "d %l" "\C-d" "Remove breakpoint at current line") |
(gud-def gud-remove "d %l" "\C-d" "Remove breakpoint at current line") |
1298 |
(gud-def gud-step "s" "\C-s" "Step one source line with display.") |
(gud-def gud-step "s" "\C-s" "Step one source line with display.") |
1299 |
(gud-def gud-next "n" "\C-n" "Step one line (skip functions).") |
(gud-def gud-next "n" "\C-n" "Step one line (skip functions).") |
1300 |
(gud-def gud-cont "c" "\C-r" "Continue with display.") |
(gud-def gud-cont "c" "\C-r" "Continue with display.") |
1301 |
; (gud-def gud-finish "finish" "\C-f" "Finish executing current function.") |
; (gud-def gud-finish "finish" "\C-f" "Finish executing current function.") |
1302 |
; (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).") |
; (gud-def gud-up "up %p" "<" "Up N stack frames (numeric arg).") |
1303 |
; (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).") |
; (gud-def gud-down "down %p" ">" "Down N stack frames (numeric arg).") |
1304 |
(gud-def gud-print "%e" "\C-p" "Evaluate perl expression at point.") |
(gud-def gud-print "%e" "\C-p" "Evaluate perl expression at point.") |
1305 |
|
|
1306 |
(setq comint-prompt-regexp "^ DB<+[0-9]+>+ ") |
(setq comint-prompt-regexp "^ DB<+[0-9]+>+ ") |
1307 |
(setq paragraph-start comint-prompt-regexp) |
(setq paragraph-start comint-prompt-regexp) |
1404 |
|
|
1405 |
(gud-def gud-break "break %l" "\C-b" "Set breakpoint at current line.") |
(gud-def gud-break "break %l" "\C-b" "Set breakpoint at current line.") |
1406 |
(gud-def gud-remove "clear %l" "\C-d" "Remove breakpoint at current line") |
(gud-def gud-remove "clear %l" "\C-d" "Remove breakpoint at current line") |
1407 |
(gud-def gud-step "step" "\C-s" "Step one source line with display.") |
(gud-def gud-step "step" "\C-s" "Step one source line with display.") |
1408 |
(gud-def gud-next "next" "\C-n" "Step one line (skip functions).") |
(gud-def gud-next "next" "\C-n" "Step one line (skip functions).") |
1409 |
(gud-def gud-cont "continue" "\C-r" "Continue with display.") |
(gud-def gud-cont "continue" "\C-r" "Continue with display.") |
1410 |
(gud-def gud-finish "return" "\C-f" "Finish executing current function.") |
(gud-def gud-finish "return" "\C-f" "Finish executing current function.") |
1411 |
(gud-def gud-up "up" "<" "Up one stack frame.") |
(gud-def gud-up "up" "<" "Up one stack frame.") |
1412 |
(gud-def gud-down "down" ">" "Down one stack frame.") |
(gud-def gud-down "down" ">" "Down one stack frame.") |
1413 |
(gud-def gud-print "p %e" "\C-p" "Evaluate Python expression at point.") |
(gud-def gud-print "p %e" "\C-p" "Evaluate Python expression at point.") |
1414 |
;; Is this right? |
;; Is this right? |
1415 |
(gud-def gud-statement "! %e" "\C-e" "Execute Python statement at point.") |
(gud-def gud-statement "! %e" "\C-e" "Execute Python statement at point.") |
1416 |
|
|
1417 |
(local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish)) |
(local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish)) |
1418 |
(local-set-key [menu-bar debug up] '("Up Stack" . gud-up)) |
(local-set-key [menu-bar debug up] '("Up Stack" . gud-up)) |
1480 |
;; |
;; |
1481 |
;; Not sure what happens with inner classes ... haven't tried them. |
;; Not sure what happens with inner classes ... haven't tried them. |
1482 |
;; |
;; |
1483 |
;; Does not grok UNICODE id's. Only ASCII id's are supported. |
;; Does not grok UNICODE id's. Only ASCII id's are supported. |
1484 |
;; |
;; |
1485 |
;; You must not put whitespace between "-classpath" and the path to |
;; You must not put whitespace between "-classpath" and the path to |
1486 |
;; search for java classes even though it is required when invoking jdb |
;; search for java classes even though it is required when invoking jdb |
1497 |
;; every file ending in ".java" in these directories parses without error. |
;; every file ending in ".java" in these directories parses without error. |
1498 |
;; |
;; |
1499 |
;; All the .java files in the directories in gud-jdb-directories are |
;; All the .java files in the directories in gud-jdb-directories are |
1500 |
;; syntactically analyzed each time gud jdb is invoked. It would be |
;; syntactically analyzed each time gud jdb is invoked. It would be |
1501 |
;; nice to keep as much information as possible between runs. It would |
;; nice to keep as much information as possible between runs. It would |
1502 |
;; be really nice to analyze the files only as neccessary (when the |
;; be really nice to analyze the files only as neccessary (when the |
1503 |
;; source needs to be displayed.) I'm not sure to what extent the former |
;; source needs to be displayed.) I'm not sure to what extent the former |
1575 |
|
|
1576 |
The set of .java files residing in the directories listed are |
The set of .java files residing in the directories listed are |
1577 |
syntactically analyzed to determine the classes they define and the |
syntactically analyzed to determine the classes they define and the |
1578 |
packages in which these classes belong. In this way gud jdb maps the |
packages in which these classes belong. In this way gud jdb maps the |
1579 |
package-qualified class names output by the jdb debugger to the source |
package-qualified class names output by the jdb debugger to the source |
1580 |
file from which the class originated. This allows gud mode to keep |
file from which the class originated. This allows gud mode to keep |
1581 |
the source code display in sync with the debugging session.") |
the source code display in sync with the debugging session.") |
1597 |
(defun gud-jdb-build-source-files-list (path extn) |
(defun gud-jdb-build-source-files-list (path extn) |
1598 |
"Return a list of java source files (absolute paths). |
"Return a list of java source files (absolute paths). |
1599 |
PATH gives the directories in which to search for files with |
PATH gives the directories in which to search for files with |
1600 |
extension EXTN. Normally EXTN is given as the regular expression |
extension EXTN. Normally EXTN is given as the regular expression |
1601 |
\"\\.java$\" ." |
\"\\.java$\" ." |
1602 |
(apply 'nconc (mapcar (lambda (d) |
(apply 'nconc (mapcar (lambda (d) |
1603 |
(when (file-directory-p d) |
(when (file-directory-p d) |
1728 |
(not (eobp))) |
(not (eobp))) |
1729 |
(cond |
(cond |
1730 |
|
|
1731 |
;; Any number of semi's following a block is legal. Move point |
;; Any number of semi's following a block is legal. Move point |
1732 |
;; past them. Note that comments and whitespace may be |
;; past them. Note that comments and whitespace may be |
1733 |
;; interspersed as well. |
;; interspersed as well. |
1734 |
((eq (following-char) ?\073) |
((eq (following-char) ?\073) |
1817 |
(defun gud-jdb-massage-args (file args) |
(defun gud-jdb-massage-args (file args) |
1818 |
;; The jdb executable must have whitespace between "-classpath" and |
;; The jdb executable must have whitespace between "-classpath" and |
1819 |
;; its value while gud-common-init expects all switch values to |
;; its value while gud-common-init expects all switch values to |
1820 |
;; follow the switch keyword without intervening whitespace. We |
;; follow the switch keyword without intervening whitespace. We |
1821 |
;; require that when the user enters the "-classpath" switch in the |
;; require that when the user enters the "-classpath" switch in the |
1822 |
;; EMACS minibuffer that they do so without the intervening |
;; EMACS minibuffer that they do so without the intervening |
1823 |
;; whitespace. This function adds it back (it's called after |
;; whitespace. This function adds it back (it's called after |
1824 |
;; gud-common-init). There are more switches like this (for |
;; gud-common-init). There are more switches like this (for |
1825 |
;; instance "-host" and "-password") but I don't care about them |
;; instance "-host" and "-password") but I don't care about them |
1826 |
;; yet. |
;; yet. |
1827 |
(if args |
(if args |
2066 |
|
|
2067 |
(gud-def gud-break "stop at %c:%l" "\C-b" "Set breakpoint at current line.") |
(gud-def gud-break "stop at %c:%l" "\C-b" "Set breakpoint at current line.") |
2068 |
(gud-def gud-remove "clear %c:%l" "\C-d" "Remove breakpoint at current line") |
(gud-def gud-remove "clear %c:%l" "\C-d" "Remove breakpoint at current line") |
2069 |
(gud-def gud-step "step" "\C-s" "Step one source line with display.") |
(gud-def gud-step "step" "\C-s" "Step one source line with display.") |
2070 |
(gud-def gud-next "next" "\C-n" "Step one line (skip functions).") |
(gud-def gud-next "next" "\C-n" "Step one line (skip functions).") |
2071 |
(gud-def gud-cont "cont" "\C-r" "Continue with display.") |
(gud-def gud-cont "cont" "\C-r" "Continue with display.") |
2072 |
(gud-def gud-finish "step up" "\C-f" "Continue until current method returns.") |
(gud-def gud-finish "step up" "\C-f" "Continue until current method returns.") |
2073 |
(gud-def gud-up "up\C-Mwhere" "<" "Up one stack frame.") |
(gud-def gud-up "up\C-Mwhere" "<" "Up one stack frame.") |
2074 |
(gud-def gud-down "down\C-Mwhere" ">" "Up one stack frame.") |
(gud-def gud-down "down\C-Mwhere" ">" "Up one stack frame.") |
2075 |
(local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish)) |
(local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish)) |
2185 |
execution stops on it. |
execution stops on it. |
2186 |
|
|
2187 |
Under gdb, dbx, and xdb, \\[gud-up] pops up through an enclosing stack |
Under gdb, dbx, and xdb, \\[gud-up] pops up through an enclosing stack |
2188 |
frame. \\[gud-down] drops back down through one. |
frame. \\[gud-down] drops back down through one. |
2189 |
|
|
2190 |
If you are using gdb or xdb, \\[gud-finish] runs execution to the return from |
If you are using gdb or xdb, \\[gud-finish] runs execution to the return from |
2191 |
the current function and stops. |
the current function and stops. |
2630 |
|
|
2631 |
(defun gud-expr-compound-sep (span-start span-end) |
(defun gud-expr-compound-sep (span-start span-end) |
2632 |
"Scan from SPAN-START to SPAN-END for punctuation characters. |
"Scan from SPAN-START to SPAN-END for punctuation characters. |
2633 |
If `->' is found, return `?.'. If `.' is found, return `?.'. |
If `->' is found, return `?.'. If `.' is found, return `?.'. |
2634 |
If any other punctuation is found, return `??'. |
If any other punctuation is found, return `??'. |
2635 |
If no punctuation is found, return `? '." |
If no punctuation is found, return `? '." |
2636 |
(let ((result ?\ ) |
(let ((result ?\ ) |