aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Roberts2006-02-14 22:03:20 +0000
committerNick Roberts2006-02-14 22:03:20 +0000
commitb5e5e9f2a070dbf739827834109cce8f5d83b2db (patch)
treed637230b23c5de41eebd85cb24d8f0007046484c
parent853e72d905ac4b85e441948896229d5726858257 (diff)
downloademacs-b5e5e9f2a070dbf739827834109cce8f5d83b2db.tar.gz
emacs-b5e5e9f2a070dbf739827834109cce8f5d83b2db.zip
(gdb-use-separate-io-buffer)
(gdb-display-separate-io-buffer, gdb-frame-separate-io-buffer) (gdb-separate-io-interrupt, gdb-separate-io-quit) (gdb-separate-io-stop, gdb-separate-io-eof): Rename from gdb-inferior-* to gdb-separate-*. (gdb-set-gud-minor-mode-existing-buffers-1): Improve doc string.
-rw-r--r--lisp/progmodes/gdb-ui.el91
1 files changed, 34 insertions, 57 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 93eeaeac4f6..d271ea4acf9 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -185,7 +185,6 @@ handlers.")
185 "Font lock keywords used in `gdb-local-mode'.") 185 "Font lock keywords used in `gdb-local-mode'.")
186 186
187;; Variables for GDB 6.4+ 187;; Variables for GDB 6.4+
188
189(defvar gdb-register-names nil "List of register names.") 188(defvar gdb-register-names nil "List of register names.")
190(defvar gdb-changed-registers nil 189(defvar gdb-changed-registers nil
191 "List of changed register numbers (strings).") 190 "List of changed register numbers (strings).")
@@ -203,7 +202,7 @@ other with the source file with the main routine of the inferior.
203 202
204If `gdb-many-windows' is t, regardless of the value of 203If `gdb-many-windows' is t, regardless of the value of
205`gdb-show-main', the layout below will appear unless 204`gdb-show-main', the layout below will appear unless
206`gdb-use-inferior-io-buffer' is nil when the source buffer 205`gdb-use-separate-io-buffer' is nil when the source buffer
207occupies the full width of the frame. Keybindings are given in 206occupies the full width of the frame. Keybindings are given in
208relevant buffer. 207relevant buffer.
209 208
@@ -281,26 +280,26 @@ Also display the main routine in the disassembly buffer if present."
281 :group 'gud 280 :group 'gud
282 :version "22.1") 281 :version "22.1")
283 282
284(defcustom gdb-use-inferior-io-buffer nil 283(defcustom gdb-use-separate-io-buffer nil
285 "Non-nil means display output from the inferior in a separate buffer." 284 "Non-nil means display output from the inferior in a separate buffer."
286 :type 'boolean 285 :type 'boolean
287 :group 'gud 286 :group 'gud
288 :version "22.1") 287 :version "22.1")
289 288
290(defun gdb-use-inferior-io-buffer (arg) 289(defun gdb-use-separate-io-buffer (arg)
291 "Toggle separate IO for inferior. 290 "Toggle separate IO for inferior.
292With arg, use separate IO iff arg is positive." 291With arg, use separate IO iff arg is positive."
293 (interactive "P") 292 (interactive "P")
294 (setq gdb-use-inferior-io-buffer 293 (setq gdb-use-separate-io-buffer
295 (if (null arg) 294 (if (null arg)
296 (not gdb-use-inferior-io-buffer) 295 (not gdb-use-separate-io-buffer)
297 (> (prefix-numeric-value arg) 0))) 296 (> (prefix-numeric-value arg) 0)))
298 (message (format "Separate inferior IO %sabled" 297 (message (format "Separate inferior IO %sabled"
299 (if gdb-use-inferior-io-buffer "en" "dis"))) 298 (if gdb-use-separate-io-buffer "en" "dis")))
300 (if (and gud-comint-buffer 299 (if (and gud-comint-buffer
301 (buffer-name gud-comint-buffer)) 300 (buffer-name gud-comint-buffer))
302 (condition-case nil 301 (condition-case nil
303 (if gdb-use-inferior-io-buffer 302 (if gdb-use-separate-io-buffer
304 (gdb-restore-windows) 303 (gdb-restore-windows)
305 (kill-buffer (gdb-inferior-io-name))) 304 (kill-buffer (gdb-inferior-io-name)))
306 (error nil)))) 305 (error nil))))
@@ -462,7 +461,7 @@ With arg, use separate IO iff arg is positive."
462 461
463 (setq gdb-buffer-type 'gdba) 462 (setq gdb-buffer-type 'gdba)
464 463
465 (if gdb-use-inferior-io-buffer (gdb-clear-inferior-io)) 464 (if gdb-use-separate-io-buffer (gdb-clear-inferior-io))
466 465
467 ;; Hack to see test for GDB 6.4+ (-stack-info-frame was implemented in 6.4) 466 ;; Hack to see test for GDB 6.4+ (-stack-info-frame was implemented in 6.4)
468 (setq gdb-version nil) 467 (setq gdb-version nil)
@@ -853,7 +852,7 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'."
853 (gdb-get-target-string) 852 (gdb-get-target-string)
854 "*")) 853 "*"))
855 854
856(defun gdb-display-inferior-io-buffer () 855(defun gdb-display-separate-io-buffer ()
857 "Display IO of inferior in a separate window." 856 "Display IO of inferior in a separate window."
858 (interactive) 857 (interactive)
859 (if gdb-use-inferior-io-buffer 858 (if gdb-use-inferior-io-buffer
@@ -867,21 +866,21 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'."
867 (menu-bar-lines . nil) 866 (menu-bar-lines . nil)
868 (minibuffer . nil))) 867 (minibuffer . nil)))
869 868
870(defun gdb-frame-inferior-io-buffer () 869(defun gdb-frame-separate-io-buffer ()
871 "Display IO of inferior in a new frame." 870 "Display IO of inferior in a new frame."
872 (interactive) 871 (interactive)
873 (if gdb-use-inferior-io-buffer 872 (if gdb-use-separate-io-buffer
874 (let ((special-display-regexps (append special-display-regexps '(".*"))) 873 (let ((special-display-regexps (append special-display-regexps '(".*")))
875 (special-display-frame-alist gdb-frame-parameters)) 874 (special-display-frame-alist gdb-frame-parameters))
876 (display-buffer (gdb-get-create-buffer 'gdb-inferior-io))))) 875 (display-buffer (gdb-get-create-buffer 'gdb-inferior-io)))))
877 876
878(defvar gdb-inferior-io-mode-map 877(defvar gdb-inferior-io-mode-map
879 (let ((map (make-sparse-keymap))) 878 (let ((map (make-sparse-keymap)))
880 (define-key map "\C-c\C-c" 'gdb-inferior-io-interrupt) 879 (define-key map "\C-c\C-c" 'gdb-separate-io-interrupt)
881 (define-key map "\C-c\C-z" 'gdb-inferior-io-stop) 880 (define-key map "\C-c\C-z" 'gdb-separate-io-stop)
882 (define-key map "\C-c\C-\\" 'gdb-inferior-io-quit) 881 (define-key map "\C-c\C-\\" 'gdb-separate-io-quit)
883 (define-key map "\C-c\C-d" 'gdb-inferior-io-eof) 882 (define-key map "\C-c\C-d" 'gdb-separate-io-eof)
884 (define-key map "\C-d" 'gdb-inferior-io-eof) 883 (define-key map "\C-d" 'gdb-separate-io-eof)
885 map)) 884 map))
886 885
887(define-derived-mode gdb-inferior-io-mode comint-mode "Inferior I/O" 886(define-derived-mode gdb-inferior-io-mode comint-mode "Inferior I/O"
@@ -902,25 +901,25 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'."
902 (process-send-string proc string) 901 (process-send-string proc string)
903 (process-send-string proc "\n"))) 902 (process-send-string proc "\n")))
904 903
905(defun gdb-inferior-io-interrupt () 904(defun gdb-separate-io-interrupt ()
906 "Interrupt the program being debugged." 905 "Interrupt the program being debugged."
907 (interactive) 906 (interactive)
908 (interrupt-process 907 (interrupt-process
909 (get-buffer-process gud-comint-buffer) comint-ptyp)) 908 (get-buffer-process gud-comint-buffer) comint-ptyp))
910 909
911(defun gdb-inferior-io-quit () 910(defun gdb-separate-io-quit ()
912 "Send quit signal to the program being debugged." 911 "Send quit signal to the program being debugged."
913 (interactive) 912 (interactive)
914 (quit-process 913 (quit-process
915 (get-buffer-process gud-comint-buffer) comint-ptyp)) 914 (get-buffer-process gud-comint-buffer) comint-ptyp))
916 915
917(defun gdb-inferior-io-stop () 916(defun gdb-separate-io-stop ()
918 "Stop the program being debugged." 917 "Stop the program being debugged."
919 (interactive) 918 (interactive)
920 (stop-process 919 (stop-process
921 (get-buffer-process gud-comint-buffer) comint-ptyp)) 920 (get-buffer-process gud-comint-buffer) comint-ptyp))
922 921
923(defun gdb-inferior-io-eof () 922(defun gdb-separate-io-eof ()
924 "Send end-of-file to the program being debugged." 923 "Send end-of-file to the program being debugged."
925 (interactive) 924 (interactive)
926 (process-send-eof 925 (process-send-eof
@@ -1116,7 +1115,7 @@ not GDB."
1116 ((eq sink 'user) 1115 ((eq sink 'user)
1117 (progn 1116 (progn
1118 (setq gud-running t) 1117 (setq gud-running t)
1119 (if gdb-use-inferior-io-buffer 1118 (if gdb-use-separate-io-buffer
1120 (setq gdb-output-sink 'inferior)))) 1119 (setq gdb-output-sink 'inferior))))
1121 (t 1120 (t
1122 (gdb-resync) 1121 (gdb-resync)
@@ -1126,7 +1125,7 @@ not GDB."
1126 "An annotation handler for `breakpoint' and other annotations. 1125 "An annotation handler for `breakpoint' and other annotations.
1127They say that I/O for the subprocess is now GDB, not the program 1126They say that I/O for the subprocess is now GDB, not the program
1128being debugged." 1127being debugged."
1129 (if gdb-use-inferior-io-buffer 1128 (if gdb-use-separate-io-buffer
1130 (let ((sink gdb-output-sink)) 1129 (let ((sink gdb-output-sink))
1131 (cond 1130 (cond
1132 ((eq sink 'inferior) 1131 ((eq sink 'inferior)
@@ -2467,8 +2466,8 @@ corresponding to the mode line clicked."
2467 '("Disassembly" . gdb-display-assembler-buffer)) 2466 '("Disassembly" . gdb-display-assembler-buffer))
2468 (define-key menu [registers] '("Registers" . gdb-display-registers-buffer)) 2467 (define-key menu [registers] '("Registers" . gdb-display-registers-buffer))
2469 (define-key menu [inferior] 2468 (define-key menu [inferior]
2470 '(menu-item "Inferior IO" gdb-display-inferior-io-buffer 2469 '(menu-item "Inferior IO" gdb-display-separate-io-buffer
2471 :enable gdb-use-inferior-io-buffer)) 2470 :enable gdb-use-separate-io-buffer))
2472 (define-key menu [locals] '("Locals" . gdb-display-locals-buffer)) 2471 (define-key menu [locals] '("Locals" . gdb-display-locals-buffer))
2473 (define-key menu [frames] '("Stack" . gdb-display-stack-buffer)) 2472 (define-key menu [frames] '("Stack" . gdb-display-stack-buffer))
2474 (define-key menu [breakpoints] 2473 (define-key menu [breakpoints]
@@ -2484,8 +2483,8 @@ corresponding to the mode line clicked."
2484 (define-key menu [disassembly] '("Disassembiy" . gdb-frame-assembler-buffer)) 2483 (define-key menu [disassembly] '("Disassembiy" . gdb-frame-assembler-buffer))
2485 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer)) 2484 (define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
2486 (define-key menu [inferior] 2485 (define-key menu [inferior]
2487 '(menu-item "Inferior IO" gdb-frame-inferior-io-buffer 2486 '(menu-item "Inferior IO" gdb-frame-separate-io-buffer
2488 :enable gdb-use-inferior-io-buffer)) 2487 :enable gdb-use-separate-io-buffer))
2489 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer)) 2488 (define-key menu [locals] '("Locals" . gdb-frame-locals-buffer))
2490 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer)) 2489 (define-key menu [frames] '("Stack" . gdb-frame-stack-buffer))
2491 (define-key menu [breakpoints] 2490 (define-key menu [breakpoints]
@@ -2495,11 +2494,11 @@ corresponding to the mode line clicked."
2495 (define-key gud-menu-map [ui] 2494 (define-key gud-menu-map [ui]
2496 `(menu-item (if (eq gud-minor-mode 'gdba) "GDB-UI" "GDB-MI") 2495 `(menu-item (if (eq gud-minor-mode 'gdba) "GDB-UI" "GDB-MI")
2497 ,menu :visible (memq gud-minor-mode '(gdbmi gdba)))) 2496 ,menu :visible (memq gud-minor-mode '(gdbmi gdba))))
2498 (define-key menu [gdb-use-inferior-io] 2497 (define-key menu [gdb-use-separate-io]
2499 '(menu-item "Separate inferior IO" gdb-use-inferior-io-buffer 2498 '(menu-item "Separate inferior IO" gdb-use-separate-io-buffer
2500 :visible (eq gud-minor-mode 'gdba) 2499 :visible (eq gud-minor-mode 'gdba)
2501 :help "Toggle separate IO for inferior." 2500 :help "Toggle separate IO for inferior."
2502 :button (:toggle . gdb-use-inferior-io-buffer))) 2501 :button (:toggle . gdb-use-separate-io-buffer)))
2503 (define-key menu [gdb-many-windows] 2502 (define-key menu [gdb-many-windows]
2504 '(menu-item "Display Other Windows" gdb-many-windows 2503 '(menu-item "Display Other Windows" gdb-many-windows
2505 :help "Toggle display of locals, stack and breakpoint information" 2504 :help "Toggle display of locals, stack and breakpoint information"
@@ -2545,7 +2544,7 @@ corresponding to the mode line clicked."
2545 (if gud-last-last-frame 2544 (if gud-last-last-frame
2546 (gud-find-file (car gud-last-last-frame)) 2545 (gud-find-file (car gud-last-last-frame))
2547 (gud-find-file gdb-main-file))) 2546 (gud-find-file gdb-main-file)))
2548 (when gdb-use-inferior-io-buffer 2547 (when gdb-use-separate-io-buffer
2549 (split-window-horizontally) 2548 (split-window-horizontally)
2550 (other-window 1) 2549 (other-window 1)
2551 (gdb-set-window-buffer 2550 (gdb-set-window-buffer
@@ -2957,37 +2956,15 @@ BUFFER nil or omitted means use the current buffer."
2957 (if (re-search-forward " source language \\(\\S-*\\)\." nil t) 2956 (if (re-search-forward " source language \\(\\S-*\\)\." nil t)
2958 (setq gdb-current-language (match-string 1))) 2957 (setq gdb-current-language (match-string 1)))
2959 (gdb-invalidate-assembler)) 2958 (gdb-invalidate-assembler))
2960
2961
2962;; For debugging Emacs only (assumes that usual stack buffer already exists).
2963(defun gdb-xbacktrace ()
2964 "Generate a full lisp level backtrace with arguments."
2965 (interactive)
2966 (let ((frames nil)
2967 (frame-number gdb-frame-number))
2968 (with-current-buffer (gdb-get-buffer 'gdb-stack-buffer)
2969 (save-excursion
2970 (goto-char (point-min))
2971 (while (search-forward "in Ffuncall " nil t)
2972 (goto-char (line-beginning-position))
2973 (looking-at "^#\\([0-9]+\\)")
2974 (push (match-string-no-properties 1) frames)
2975 (forward-line 1))))
2976 (dolist (frame frames)
2977 (gdb-enqueue-input (list (concat "server frame " frame "\n")
2978 'ignore))
2979; can't use separate buffer because Emacs gets confused by starting
2980; annotation from debug1_print (with output-sink eq 'emacs)
2981; (gdb-enqueue-input (list "server ppargs\n" 'gdb-get-arguments))
2982 (gud-basic-call "server ppargs"))
2983 (gdb-enqueue-input (list (concat "server frame " frame-number "\n")
2984 'ignore))))
2985 2959
2960
2986;; Code specific to GDB 6.4 2961;; Code specific to GDB 6.4
2987(defconst gdb-source-file-regexp-1 "fullname=\"\\(.*?\\)\"") 2962(defconst gdb-source-file-regexp-1 "fullname=\"\\(.*?\\)\"")
2988 2963
2989(defun gdb-set-gud-minor-mode-existing-buffers-1 () 2964(defun gdb-set-gud-minor-mode-existing-buffers-1 ()
2990 "Create list of source files for current GDB session." 2965 "Create list of source files for current GDB session.
2966If buffers already exist for any of these files, gud-minor-mode
2967is set in them."
2991 (goto-char (point-min)) 2968 (goto-char (point-min))
2992 (while (re-search-forward gdb-source-file-regexp-1 nil t) 2969 (while (re-search-forward gdb-source-file-regexp-1 nil t)
2993 (push (match-string 1) gdb-source-file-list)) 2970 (push (match-string 1) gdb-source-file-list))