aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Roberts2003-05-21 20:12:20 +0000
committerNick Roberts2003-05-21 20:12:20 +0000
commite13dd0a857f992133556c3c5c4bbc8a79c08722b (patch)
tree4b1999f8f2675c7a5024b50930ca94bdbb4b2d1c
parentb7ecb824d0862c9450b5085934e98be1d5f44e9c (diff)
downloademacs-e13dd0a857f992133556c3c5c4bbc8a79c08722b.tar.gz
emacs-e13dd0a857f992133556c3c5c4bbc8a79c08722b.zip
(gud-gdba-command-name): Use -noasync option for Gdb
with MS windows. (gdb-display-end): Only make buffer writeable temporarily. Move "View" submenu up one level.
-rw-r--r--lisp/gdb-ui.el112
1 files changed, 73 insertions, 39 deletions
diff --git a/lisp/gdb-ui.el b/lisp/gdb-ui.el
index 55c59e747ee..7953743d906 100644
--- a/lisp/gdb-ui.el
+++ b/lisp/gdb-ui.el
@@ -43,7 +43,8 @@
43;; 43;;
44;; Known Bugs: 44;; Known Bugs:
45;; Does not auto-display arrays of structures or structures containing arrays. 45;; Does not auto-display arrays of structures or structures containing arrays.
46;; On MS Windows, GDB from MINGW does not flush the output from the inferior. 46;; On MS Windows, Gdb 5.1.1 from MinGW 2.0 does not flush the output from the
47;; inferior.
47 48
48;;; Code: 49;;; Code:
49 50
@@ -170,7 +171,7 @@ The following interactive lisp functions help control operation :
170 (gdb-clear-inferior-io) 171 (gdb-clear-inferior-io)
171 ;; 172 ;;
172 (if (eq window-system 'w32) 173 (if (eq window-system 'w32)
173 (gdb-enqueue-input (list "set set new-console off\n" 'ignore))) 174 (gdb-enqueue-input (list "set new-console off\n" 'ignore)))
174 (gdb-enqueue-input (list "set height 0\n" 'ignore)) 175 (gdb-enqueue-input (list "set height 0\n" 'ignore))
175 ;; find source file and compilation directory here 176 ;; find source file and compilation directory here
176 (gdb-enqueue-input (list "server list\n" 'ignore)) 177 (gdb-enqueue-input (list "server list\n" 'ignore))
@@ -517,7 +518,10 @@ This filter may simply queue output for a later time."
517;; any newlines. 518;; any newlines.
518;; 519;;
519 520
520(defcustom gud-gdba-command-name "gdb -annotate=2" 521(defcustom gud-gdba-command-name
522 (if (eq window-system 'w32)
523 "gdb -annotate=2 -noasync"
524 "gdb -annotate=2")
521 "Default command to execute an executable under the GDB-UI debugger." 525 "Default command to execute an executable under the GDB-UI debugger."
522 :type 'string 526 :type 'string
523 :group 'gud) 527 :group 'gud)
@@ -785,12 +789,12 @@ output from the current command if that happens to be appropriate."
785 (let ((start (progn (point))) 789 (let ((start (progn (point)))
786 (end (progn (end-of-line) (point)))) 790 (end (progn (end-of-line) (point))))
787 (with-current-buffer gdb-expression-buffer-name 791 (with-current-buffer gdb-expression-buffer-name
788 (setq buffer-read-only nil) 792 (let ((buffer-read-only nil))
789 (delete-region (point-min) (point-max)) 793 (delete-region (point-min) (point-max))
790 (insert-buffer-substring (gdb-get-buffer 794 (insert-buffer-substring (gdb-get-buffer
791 'gdb-partial-output-buffer) 795 'gdb-partial-output-buffer)
792 start end) 796 start end)
793 (insert "\n"))) 797 (insert "\n"))))
794 (goto-char (point-min)) 798 (goto-char (point-min))
795 (re-search-forward "##" nil t) 799 (re-search-forward "##" nil t)
796 (setq gdb-nesting-level 0) 800 (setq gdb-nesting-level 0)
@@ -1478,6 +1482,36 @@ current line."
1478 file 1482 file
1479 (expand-file-name file gdb-cdir)))) 1483 (expand-file-name file gdb-cdir))))
1480 (goto-line (string-to-number line)))))) 1484 (goto-line (string-to-number line))))))
1485;; I'll get this to work one day!
1486;; (defun gdb-goto-breakpoint ()
1487;; "Display the file in the source buffer at the breakpoint specified on the
1488;; current line."
1489;; (interactive)
1490;; (save-excursion
1491;; (let ((eol (progn (end-of-line) (point))))
1492;; (beginning-of-line 1)
1493;; (if (re-search-forward "\\(\\S-*\\):\\([0-9]+\\)" eol t)
1494;; (let ((line (match-string 2))
1495;; (file (match-string 1)))
1496;; (save-selected-window
1497;; (select-window gdb-source-window)
1498;; (switch-to-buffer (find-file-noselect
1499;; (if (file-exists-p file)
1500;; file
1501;; (expand-file-name file gdb-cdir))))
1502;; (goto-line (string-to-number line))))))
1503;; (let ((eol (progn (end-of-line) (point))))
1504;; (beginning-of-line 1)
1505;; (if (re-search-forward "<\\(\\S-*?\\)\\(\\+*[0-9]*\\)>" eol t)
1506;; (save-selected-window
1507;; (select-window gdb-source-window)
1508;; (gdb-get-create-buffer 'gdb-assembler-buffer)
1509;; (gdb-enqueue-input
1510;; (list (concat "server disassemble " (match-string 1) "\n")
1511;; 'gdb-assembler-handler))
1512;; (with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer)
1513;; (re-search-forward
1514;; (concat (match-string 1) (match-string 2)))))))))
1481 1515
1482(defun gdb-mouse-goto-breakpoint (event) 1516(defun gdb-mouse-goto-breakpoint (event)
1483 "Display the file in the source buffer at the selected breakpoint." 1517 "Display the file in the source buffer at the selected breakpoint."
@@ -1959,10 +1993,18 @@ the source buffer."
1959 1993
1960;;; Shared keymap initialization: 1994;;; Shared keymap initialization:
1961 1995
1962(defun gdb-display-gdb-buffer () 1996 (let ((menu (make-sparse-keymap "GDB-Frames")))
1963 (interactive) 1997 (define-key gud-menu-map [frames]
1964 (gdb-display-buffer 1998 `(menu-item "GDB-Frames" ,menu :visible (eq gud-minor-mode 'gdba)))
1965 (gdb-get-create-buffer 'gdba))) 1999 (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer))
2000 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer))
2001 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
2002 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer))
2003 (define-key menu [breakpoints] '("Breakpoints" . gdb-frame-breakpoints-buffer))
2004 (define-key menu [display] '("Display" . gdb-frame-display-buffer))
2005 (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
2006; (define-key menu [assembler] '("Assembler" . gdb-frame-assembler-buffer))
2007)
1966 2008
1967(let ((menu (make-sparse-keymap "GDB-Windows"))) 2009(let ((menu (make-sparse-keymap "GDB-Windows")))
1968 (define-key gud-menu-map [displays] 2010 (define-key gud-menu-map [displays]
@@ -1974,38 +2016,30 @@ the source buffer."
1974 (define-key menu [breakpoints] '("Breakpoints" . gdb-display-breakpoints-buffer)) 2016 (define-key menu [breakpoints] '("Breakpoints" . gdb-display-breakpoints-buffer))
1975 (define-key menu [display] '("Display" . gdb-display-display-buffer)) 2017 (define-key menu [display] '("Display" . gdb-display-display-buffer))
1976 (define-key menu [threads] '("Threads" . gdb-display-threads-buffer)) 2018 (define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
1977 (define-key menu [assembler] '("Assembler" . gdb-display-assembler-buffer))) 2019; (define-key menu [assembler] '("Assembler" . gdb-display-assembler-buffer))
2020)
2021
2022(let ((menu (make-sparse-keymap "View")))
2023 (define-key gud-menu-map [view] `(menu-item "View" ,menu))
2024; (define-key menu [both] '(menu-item "Both" gdb-view-both
2025; :help "Display both source and assembler"
2026; :button (:radio . (eq gdb-selected-view 'both))))
2027 (define-key menu [assembler] '(menu-item "Assembler" gdb-view-assembler
2028 :help "Display assembler only"
2029 :button (:radio . (eq gdb-selected-view 'assembler))))
2030 (define-key menu [source] '(menu-item "Source" gdb-view-source
2031 :help "Display source only"
2032 :button (:radio . (eq gdb-selected-view 'source)))))
1978 2033
1979(defun gdb-frame-gdb-buffer () 2034(defun gdb-frame-gdb-buffer ()
1980 (interactive) 2035 (interactive)
1981 (switch-to-buffer-other-frame 2036 (switch-to-buffer-other-frame
1982 (gdb-get-create-buffer 'gdba))) 2037 (gdb-get-create-buffer 'gdba)))
1983 2038
1984(let ((menu (make-sparse-keymap "GDB-Frames")) 2039(defun gdb-display-gdb-buffer ()
1985 (submenu (make-sparse-keymap "View"))) 2040 (interactive)
1986 (define-key gud-menu-map [frames] 2041 (gdb-display-buffer
1987 `(menu-item "GDB-Frames" ,menu :visible (eq gud-minor-mode 'gdba))) 2042 (gdb-get-create-buffer 'gdba)))
1988 (define-key menu [gdb] '("Gdb" . gdb-frame-gdb-buffer))
1989 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer))
1990 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
1991 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer))
1992 (define-key menu [breakpoints] '("Breakpoints" . gdb-frame-breakpoints-buffer))
1993 (define-key menu [display] '("Display" . gdb-frame-display-buffer))
1994 (define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
1995 (define-key menu [view] `(menu-item "View" ,submenu))
1996 (define-key submenu [source]
1997 '(menu-item "Source" gdb-view-source
1998 :help "Display source only"
1999 :button (:radio . (eq gdb-selected-view 'source))))
2000 (define-key submenu [assembler]
2001 '(menu-item "Assembler" gdb-view-assembler
2002 :help "Display assembler only"
2003 :button (:radio . (eq gdb-selected-view 'assembler))))
2004; (define-key submenu [both]
2005; '(menu-item "Both" gdb-view-both
2006; :help "Display both source and assembler"
2007; :button (:radio . (eq gdb-selected-view 'both))))
2008)
2009 2043
2010(defun gdb-view-source() 2044(defun gdb-view-source()
2011(interactive) 2045(interactive)