diff options
| author | Nick Roberts | 2003-05-21 20:12:20 +0000 |
|---|---|---|
| committer | Nick Roberts | 2003-05-21 20:12:20 +0000 |
| commit | e13dd0a857f992133556c3c5c4bbc8a79c08722b (patch) | |
| tree | 4b1999f8f2675c7a5024b50930ca94bdbb4b2d1c | |
| parent | b7ecb824d0862c9450b5085934e98be1d5f44e9c (diff) | |
| download | emacs-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.el | 112 |
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) |