comparison lisp/gdb-ui.el @ 48963:1bb53161a4b9

(gdb-info-display-custom): Ensure that frames/buffers of displayed expressions are deleted when the displayed expressions are deleted. (gdb-delete-disp-this-line, gdb-delete-display): Frame/buffer deletion is handled by gdb-info-display-custom now. (gdb-source-info): Undo earlier change (do create display buffer automatically).
author Nick Roberts <nickrob@snap.net.nz>
date Thu, 26 Dec 2002 00:12:09 +0000
parents 1abfa35a3a5a
children f3c5848184cb
comparison
equal deleted inserted replaced
48962:a494d9f972c7 48963:1bb53161a4b9
24 ;; Boston, MA 02111-1307, USA. 24 ;; Boston, MA 02111-1307, USA.
25 25
26 ;;; Commentary: 26 ;;; Commentary:
27 27
28 ;; This file is based on gdba.el from GDB 5.0 written by Jim Kingdon and uses 28 ;; This file is based on gdba.el from GDB 5.0 written by Jim Kingdon and uses
29 ;; GDB's annotation interface. You don't need to know about annotations but 29 ;; GDB's annotation interface. It has been extended to use features of Emacs
30 ;; If you are interested developing this mode see the Annotations section in 30 ;; 21 such as the display margin for breakpoints and the toolbar. It also has
31 ;; the GDB info manual). 31 ;; new buffers and lots of other new features such as formatted auto-display
32 ;; 32 ;; of arrays and structures (see the GDB-UI section in the Emacs info
33 ;; It has been extended to use features of Emacs 21 such as the display 33 ;; manual).
34 ;; margin for breakpoints and the toolbar. It also has new buffers and lots 34
35 ;; of other new features such as formatted auto-display of arrays and 35 ;; You don't need to know about annotations to use this mode as a graphical
36 ;; structures (see the GDB-UI section in the Emacs info manual). 36 ;; user interface to GDB. However, if you are interested developing the mode
37 ;; itself see the Annotations section in the GDB info manual.
37 ;; 38 ;;
38 ;; Known Bugs: Does not auto-display arrays of structures or structures 39 ;; Known Bugs: Does not auto-display arrays of structures or structures
39 ;; containing arrays properly. 40 ;; containing arrays.
40 41
41 ;;; Code: 42 ;;; Code:
42 43
43 (require 'gud) 44 (require 'gud)
44 45
96 97
97 `gdb-many-windows' - Toggle the number of windows gdb uses. 98 `gdb-many-windows' - Toggle the number of windows gdb uses.
98 `gdb-restore-windows' - To restore the window layout. 99 `gdb-restore-windows' - To restore the window layout.
99 `gdb-quit' - To delete (most) of the buffers used by GDB-UI and 100 `gdb-quit' - To delete (most) of the buffers used by GDB-UI and
100 reset variables." 101 reset variables."
101 102 ;;
102 (interactive (list (gud-query-cmdline 'gdba))) 103 (interactive (list (gud-query-cmdline 'gdba)))
103 104 ;;
104 ;; Let's start with a basic gud-gdb buffer and then modify it a bit. 105 ;; Let's start with a basic gud-gdb buffer and then modify it a bit.
105 (gdb command-line) 106 (gdb command-line)
106 107 ;;
107 (set (make-local-variable 'gud-minor-mode) 'gdba) 108 (set (make-local-variable 'gud-minor-mode) 'gdba)
108 (set (make-local-variable 'gud-marker-filter) 'gud-gdba-marker-filter) 109 (set (make-local-variable 'gud-marker-filter) 'gud-gdba-marker-filter)
109 110 ;;
110 (gud-def gud-break (if (not (string-equal mode-name "Assembler")) 111 (gud-def gud-break (if (not (string-equal mode-name "Assembler"))
111 (gud-call "break %f:%l" arg) 112 (gud-call "break %f:%l" arg)
112 (save-excursion 113 (save-excursion
113 (beginning-of-line) 114 (beginning-of-line)
114 (forward-char 2) 115 (forward-char 2)
115 (gud-call "break *%a" arg))) 116 (gud-call "break *%a" arg)))
116 "\C-b" "Set breakpoint at current line or address.") 117 "\C-b" "Set breakpoint at current line or address.")
117 118 ;;
118 (gud-def gud-remove (if (not (string-equal mode-name "Assembler")) 119 (gud-def gud-remove (if (not (string-equal mode-name "Assembler"))
119 (gud-call "clear %f:%l" arg) 120 (gud-call "clear %f:%l" arg)
120 (save-excursion 121 (save-excursion
121 (beginning-of-line) 122 (beginning-of-line)
122 (forward-char 2) 123 (forward-char 2)
123 (gud-call "clear *%a" arg))) 124 (gud-call "clear *%a" arg)))
124 "\C-d" "Remove breakpoint at current line or address.") 125 "\C-d" "Remove breakpoint at current line or address.")
125 126 ;;
126 (setq comint-input-sender 'gdb-send) 127 (setq comint-input-sender 'gdb-send)
127 128 ;;
128 ;; (re-)initialise 129 ;; (re-)initialise
129 (setq gdb-main-or-pc "main") 130 (setq gdb-main-or-pc "main")
130 (setq gdb-current-address nil) 131 (setq gdb-current-address nil)
131 (setq gdb-display-in-progress nil) 132 (setq gdb-display-in-progress nil)
132 (setq gdb-dive nil) 133 (setq gdb-dive nil)
133 134 ;;
134 (mapc 'make-local-variable gdb-variables) 135 (mapc 'make-local-variable gdb-variables)
135 (setq gdb-buffer-type 'gdba) 136 (setq gdb-buffer-type 'gdba)
136 137 ;;
137 (gdb-clear-inferior-io) 138 (gdb-clear-inferior-io)
138 139 ;;
139 ;; find source file and compilation directory here 140 ;; find source file and compilation directory here
140 (gdb-enqueue-input (list "server list\n" 'ignore)) 141 (gdb-enqueue-input (list "server list\n" 'ignore))
141 (gdb-enqueue-input (list "server info source\n" 142 (gdb-enqueue-input (list "server info source\n"
142 'gdb-source-info)) 143 'gdb-source-info))
143 144 ;;
144 (run-hooks 'gdba-mode-hook)) 145 (run-hooks 'gdba-mode-hook))
145 146
146 (defun gud-display () 147 (defun gud-display ()
147 "Display (possibly dereferenced) C expression at point." 148 "Display (possibly dereferenced) C expression at point."
148 (interactive) 149 (interactive)
723 (setq gdb-expression (concat char gdb-current-frame 724 (setq gdb-expression (concat char gdb-current-frame
724 "::" gdb-expression)) 725 "::" gdb-expression))
725 ;;else put * back on if necessary 726 ;;else put * back on if necessary
726 (setq gdb-expression (concat char gdb-expression))) 727 (setq gdb-expression (concat char gdb-expression)))
727 (setq header-line-format (concat "-- " gdb-expression " %-")))) 728 (setq header-line-format (concat "-- " gdb-expression " %-"))))
728 729 ;;
729 ;;-if scalar/string 730 ;;-if scalar/string
730 (if (not (re-search-forward "##" nil t)) 731 (if (not (re-search-forward "##" nil t))
731 (progn 732 (progn
732 (save-excursion 733 (save-excursion
733 (set-buffer gdb-expression-buffer-name) 734 (set-buffer gdb-expression-buffer-name)
1046 (let ( 1047 (let (
1047 ;; Recall the left over burst from last time 1048 ;; Recall the left over burst from last time
1048 (burst (concat (gdb-get-burst) string)) 1049 (burst (concat (gdb-get-burst) string))
1049 ;; Start accumulating output for the GUD buffer 1050 ;; Start accumulating output for the GUD buffer
1050 (output "")) 1051 (output ""))
1051 1052 ;;
1052 ;; Process all the complete markers in this chunk. 1053 ;; Process all the complete markers in this chunk.
1053 (while (string-match "\n\032\032\\(.*\\)\n" burst) 1054 (while (string-match "\n\032\032\\(.*\\)\n" burst)
1054 (let ((annotation (match-string 1 burst))) 1055 (let ((annotation (match-string 1 burst)))
1055 1056 ;;
1056 ;; Stuff prior to the match is just ordinary output. 1057 ;; Stuff prior to the match is just ordinary output.
1057 ;; It is either concatenated to OUTPUT or directed 1058 ;; It is either concatenated to OUTPUT or directed
1058 ;; elsewhere. 1059 ;; elsewhere.
1059 (setq output 1060 (setq output
1060 (gdb-concat-output 1061 (gdb-concat-output
1076 annotation-arguments) 1077 annotation-arguments)
1077 ;; Else the annotation is not recognized. Ignore it silently, 1078 ;; Else the annotation is not recognized. Ignore it silently,
1078 ;; so that GDB can add new annotations without causing 1079 ;; so that GDB can add new annotations without causing
1079 ;; us to blow up. 1080 ;; us to blow up.
1080 )))) 1081 ))))
1081 1082 ;;
1082 ;; Does the remaining text end in a partial line? 1083 ;; Does the remaining text end in a partial line?
1083 ;; If it does, then keep part of the burst until we get more. 1084 ;; If it does, then keep part of the burst until we get more.
1084 (if (string-match "\n\\'\\|\n\032\\'\\|\n\032\032.*\\'" 1085 (if (string-match "\n\\'\\|\n\032\\'\\|\n\032\032.*\\'"
1085 burst) 1086 burst)
1086 (progn 1087 (progn
1087 ;; Everything before the potential marker start can be output. 1088 ;; Everything before the potential marker start can be output.
1088 (setq output 1089 (setq output
1089 (gdb-concat-output output 1090 (gdb-concat-output output
1090 (substring burst 0 (match-beginning 0)))) 1091 (substring burst 0 (match-beginning 0))))
1091 1092 ;;
1092 ;; Everything after, we save, to combine with later input. 1093 ;; Everything after, we save, to combine with later input.
1093 (setq burst (substring burst (match-beginning 0)))) 1094 (setq burst (substring burst (match-beginning 0))))
1094 1095 ;;
1095 ;; In case we know the burst contains no partial annotations: 1096 ;; In case we know the burst contains no partial annotations:
1096 (progn 1097 (progn
1097 (setq output (gdb-concat-output output burst)) 1098 (setq output (gdb-concat-output output burst))
1098 (setq burst ""))) 1099 (setq burst "")))
1099 1100 ;;
1100 ;; Save the remaining burst for the next call to this function. 1101 ;; Save the remaining burst for the next call to this function.
1101 (gdb-set-burst burst) 1102 (gdb-set-burst burst)
1102 output))) 1103 output)))
1103 1104
1104 (defun gdb-concat-output (so-far new) 1105 (defun gdb-concat-output (so-far new)
1223 ;; `gdb-breakpoints-buffer'. 1224 ;; `gdb-breakpoints-buffer'.
1224 ;; 1225 ;;
1225 ;; It defines a function to serve as the annotation handler that 1226 ;; It defines a function to serve as the annotation handler that
1226 ;; handles the `foo-invalidated' message. That function is called: 1227 ;; handles the `foo-invalidated' message. That function is called:
1227 gdb-invalidate-breakpoints 1228 gdb-invalidate-breakpoints
1228 1229 ;;
1229 ;; To update the buffer, this command is sent to gdb. 1230 ;; To update the buffer, this command is sent to gdb.
1230 "server info breakpoints\n" 1231 "server info breakpoints\n"
1231 1232 ;;
1232 ;; This also defines a function to be the handler for the output 1233 ;; This also defines a function to be the handler for the output
1233 ;; from the command above. That function will copy the output into 1234 ;; from the command above. That function will copy the output into
1234 ;; the appropriately typed buffer. That function will be called: 1235 ;; the appropriately typed buffer. That function will be called:
1235 gdb-info-breakpoints-handler 1236 gdb-info-breakpoints-handler
1236 ;; buffer specific functions 1237 ;; buffer specific functions
1241 (defvar breakpoint-disabled-icon) 1242 (defvar breakpoint-disabled-icon)
1242 1243
1243 ;;-put breakpoint icons in relevant margins (even those set in the GUD buffer) 1244 ;;-put breakpoint icons in relevant margins (even those set in the GUD buffer)
1244 (defun gdb-info-breakpoints-custom () 1245 (defun gdb-info-breakpoints-custom ()
1245 (let ((flag)(address)) 1246 (let ((flag)(address))
1246 1247 ;;
1247 ;; remove all breakpoint-icons in source buffers but not assembler buffer 1248 ;; remove all breakpoint-icons in source buffers but not assembler buffer
1248 (dolist (buffer (buffer-list)) 1249 (dolist (buffer (buffer-list))
1249 (save-excursion 1250 (save-excursion
1250 (set-buffer buffer) 1251 (set-buffer buffer)
1251 (if (and (eq gud-minor-mode 'gdba) 1252 (if (and (eq gud-minor-mode 'gdba)
1356 (error "Not recognized as break/watchpoint line") 1357 (error "Not recognized as break/watchpoint line")
1357 (gdb-enqueue-input 1358 (gdb-enqueue-input
1358 (list 1359 (list
1359 (concat 1360 (concat
1360 (if (eq ?y (char-after (match-beginning 2))) 1361 (if (eq ?y (char-after (match-beginning 2)))
1361 "server disable " 1362 "server disable "
1362 "server enable ") 1363 "server enable ")
1363 (match-string 1) 1364 (match-string 1) "\n")
1364 "\n")
1365 'ignore))))) 1365 'ignore)))))
1366 1366
1367 (defun gdb-delete-bp-this-line () 1367 (defun gdb-delete-bp-this-line ()
1368 "Delete the breakpoint of the current line." 1368 "Delete the breakpoint of the current line."
1369 (interactive) 1369 (interactive)
1420 'mouse-face 'highlight) 1420 'mouse-face 'highlight)
1421 (forward-line 1))))) 1421 (forward-line 1)))))
1422 1422
1423 (defun gdb-stack-buffer-name () 1423 (defun gdb-stack-buffer-name ()
1424 (with-current-buffer gud-comint-buffer 1424 (with-current-buffer gud-comint-buffer
1425 (concat "*stack frames of " 1425 (concat "*stack frames of " (gdb-get-target-string) "*")))
1426 (gdb-get-target-string) "*")))
1427 1426
1428 (defun gdb-display-stack-buffer () 1427 (defun gdb-display-stack-buffer ()
1429 (interactive) 1428 (interactive)
1430 (gdb-display-buffer 1429 (gdb-display-buffer
1431 (gdb-get-create-buffer 'gdb-stack-buffer))) 1430 (gdb-get-create-buffer 'gdb-stack-buffer)))
1469 (setq selection (gdb-get-frame-number)))) 1468 (setq selection (gdb-get-frame-number))))
1470 (select-window (posn-window (event-end e))) 1469 (select-window (posn-window (event-end e)))
1471 (save-excursion 1470 (save-excursion
1472 (set-buffer gud-comint-buffer) 1471 (set-buffer gud-comint-buffer)
1473 (gdb-enqueue-input 1472 (gdb-enqueue-input
1474 (list (gud-format-command "server frame %p\n" selection) 1473 (list (gud-format-command "server frame %p\n" selection) 'ignore))
1475 'ignore))
1476 (gud-display-frame)))) 1474 (gud-display-frame))))
1477 1475
1478 1476
1479 ;; 1477 ;;
1480 ;; Registers buffer. 1478 ;; Registers buffer.
1531 gdb-invalidate-locals 1529 gdb-invalidate-locals
1532 "server info locals\n" 1530 "server info locals\n"
1533 gdb-info-locals-handler 1531 gdb-info-locals-handler
1534 gdb-info-locals-custom) 1532 gdb-info-locals-custom)
1535 1533
1536 1534 ;; Abbreviate for arrays and structures.
1537 ;;Abbreviate for arrays and structures. These can be expanded using gud-display 1535 ;; These can be expanded using gud-display.
1538 (defun gdb-info-locals-handler nil 1536 (defun gdb-info-locals-handler nil
1539 (gdb-set-pending-triggers (delq 'gdb-invalidate-locals 1537 (gdb-set-pending-triggers (delq 'gdb-invalidate-locals
1540 (gdb-get-pending-triggers))) 1538 (gdb-get-pending-triggers)))
1541 (let ((buf (gdb-get-buffer 'gdb-partial-output-buffer))) 1539 (let ((buf (gdb-get-buffer 'gdb-partial-output-buffer)))
1542 (save-excursion 1540 (save-excursion
1606 "server info display\n" 1604 "server info display\n"
1607 gdb-info-display-handler 1605 gdb-info-display-handler
1608 gdb-info-display-custom) 1606 gdb-info-display-custom)
1609 1607
1610 (defun gdb-info-display-custom () 1608 (defun gdb-info-display-custom ()
1611 ;; TODO: ensure frames of expressions that have been deleted are also deleted 1609 (let ((display-list nil))
1612 ;; these can be missed currently eg through GUD buffer, restarting a 1610 (save-excursion
1613 ;; recompiled program. 1611 (set-buffer (gdb-get-buffer 'gdb-display-buffer))
1614 ) 1612 (goto-char (point-min))
1613 (while (< (point) (- (point-max) 1))
1614 (forward-line 1)
1615 (if (looking-at "\\([0-9]+\\): \\([ny]\\)")
1616 (setq display-list
1617 (cons (string-to-int (match-string 1)) display-list)))
1618 (end-of-line)))
1619 (if (not (display-graphic-p))
1620 (progn
1621 (dolist (buffer (buffer-list))
1622 (if (string-match "\\*display \\([0-9]+\\)\\*" (buffer-name buffer))
1623 (progn
1624 (let ((number
1625 (match-string 1 (buffer-name buffer))))
1626 (if (not (memq (string-to-int number) display-list))
1627 (kill-buffer
1628 (get-buffer (concat "*display " number "*")))))))))
1629 (dolist (frame (frame-list))
1630 (let ((frame-name (frame-parameter frame 'name)))
1631 (if (string-match "\\*display \\([0-9]+\\)\\*" frame-name)
1632 (progn
1633 (let ((number (match-string 1 frame-name)))
1634 (if (not (memq (string-to-int number) display-list))
1635 (progn (kill-buffer
1636 (get-buffer (concat "*display " number "*")))
1637 (delete-frame frame)))))))))))
1615 1638
1616 (defvar gdb-display-mode-map 1639 (defvar gdb-display-mode-map
1617 (let ((map (make-sparse-keymap)) 1640 (let ((map (make-sparse-keymap))
1618 (menu (make-sparse-keymap "Display"))) 1641 (menu (make-sparse-keymap "Display")))
1619 (define-key menu [toggle] '("Toggle" . gdb-toggle-disp-this-line)) 1642 (define-key menu [toggle] '("Toggle" . gdb-toggle-disp-this-line))
1660 (list 1683 (list
1661 (concat 1684 (concat
1662 (if (eq ?y (char-after (match-beginning 2))) 1685 (if (eq ?y (char-after (match-beginning 2)))
1663 "server disable display " 1686 "server disable display "
1664 "server enable display ") 1687 "server enable display ")
1665 (match-string 1) 1688 (match-string 1) "\n")
1666 "\n")
1667 'ignore))))) 1689 'ignore)))))
1668 1690
1669 (defun gdb-delete-disp-this-line () 1691 (defun gdb-delete-disp-this-line ()
1670 "Delete the displayed expression of the current line." 1692 "Delete the displayed expression of the current line."
1671 (interactive) 1693 (interactive)
1675 (beginning-of-line 1) 1697 (beginning-of-line 1)
1676 (if (not (looking-at "\\([0-9]+\\): \\([ny]\\)")) 1698 (if (not (looking-at "\\([0-9]+\\): \\([ny]\\)"))
1677 (error "No expression on this line") 1699 (error "No expression on this line")
1678 (let ((number (match-string 1))) 1700 (let ((number (match-string 1)))
1679 (gdb-enqueue-input 1701 (gdb-enqueue-input
1680 (list (concat "server delete display " number "\n") 1702 (list (concat "server delete display " number "\n") 'ignore))))))
1681 'ignore))
1682 (if (not (display-graphic-p))
1683 (kill-buffer (get-buffer (concat "*display " number "*")))
1684 (catch 'frame-found
1685 (let ((frames (frame-list)))
1686 (while frames
1687 (if (string-equal (frame-parameter (car frames) 'name)
1688 (concat "*display " number "*"))
1689 (progn (kill-buffer
1690 (get-buffer (concat "*display " number "*")))
1691 (delete-frame (car frames))
1692 (throw 'frame-found nil)))
1693 (setq frames (cdr frames))))))))))
1694 1703
1695 (defvar gdb-expressions-mode-map 1704 (defvar gdb-expressions-mode-map
1696 (let ((map (make-sparse-keymap))) 1705 (let ((map (make-sparse-keymap)))
1697 (suppress-keymap map) 1706 (suppress-keymap map)
1698 (define-key map "v" 'gdb-array-visualise) 1707 (define-key map "v" 'gdb-array-visualise)
1944 (delete-other-windows) 1953 (delete-other-windows)
1945 (if gdb-many-windows 1954 (if gdb-many-windows
1946 (gdb-setup-windows) 1955 (gdb-setup-windows)
1947 (gdb-display-breakpoints-buffer) 1956 (gdb-display-breakpoints-buffer)
1948 (gdb-display-stack-buffer) 1957 (gdb-display-stack-buffer)
1958 (gdb-display-display-buffer)
1949 (delete-other-windows) 1959 (delete-other-windows)
1950 (split-window) 1960 (split-window)
1951 (other-window 1) 1961 (other-window 1)
1952 (switch-to-buffer (gud-find-file gdb-main-file)) 1962 (switch-to-buffer (gud-find-file gdb-main-file))
1953 (setq gdb-source-window (get-buffer-window (current-buffer))) 1963 (setq gdb-source-window (get-buffer-window (current-buffer)))
2052 (defun gdb-delete-display () 2062 (defun gdb-delete-display ()
2053 "Delete displayed expression and its frame." 2063 "Delete displayed expression and its frame."
2054 (interactive) 2064 (interactive)
2055 (gdb-enqueue-input 2065 (gdb-enqueue-input
2056 (list (concat "server delete display " gdb-display-number "\n") 2066 (list (concat "server delete display " gdb-display-number "\n")
2057 'ignore)) 2067 'ignore)))
2058 (kill-buffer nil)
2059 (delete-frame))
2060 2068
2061 ;; 2069 ;;
2062 ;; Assembler buffer. 2070 ;; Assembler buffer.
2063 ;; 2071 ;;
2064 (gdb-set-buffer-rules 'gdb-assembler-buffer 2072 (gdb-set-buffer-rules 'gdb-assembler-buffer
2081 (remove-arrow) 2089 (remove-arrow)
2082 (goto-char (point-min)) 2090 (goto-char (point-min))
2083 (re-search-forward gdb-current-address) 2091 (re-search-forward gdb-current-address)
2084 (setq gdb-arrow-position (point)) 2092 (setq gdb-arrow-position (point))
2085 (put-arrow "=>" gdb-arrow-position nil 'left-margin)))) 2093 (put-arrow "=>" gdb-arrow-position nil 'left-margin))))
2086
2087 ;; remove all breakpoint-icons in assembler buffer before updating. 2094 ;; remove all breakpoint-icons in assembler buffer before updating.
2088 (save-excursion 2095 (save-excursion
2089 (set-buffer buffer) 2096 (set-buffer buffer)
2090 (if (display-graphic-p) 2097 (if (display-graphic-p)
2091 (remove-images (point-min) (point-max)) 2098 (remove-images (point-min) (point-max))
2173 (if (and (gdb-get-buffer 'gdb-assembler-buffer) 2180 (if (and (gdb-get-buffer 'gdb-assembler-buffer)
2174 (or (not (member 'gdb-invalidate-assembler 2181 (or (not (member 'gdb-invalidate-assembler
2175 (gdb-get-pending-triggers))) 2182 (gdb-get-pending-triggers)))
2176 (not (string-equal gdb-main-or-pc gdb-prev-main-or-pc)))) 2183 (not (string-equal gdb-main-or-pc gdb-prev-main-or-pc))))
2177 (progn 2184 (progn
2178
2179 ;; take previous disassemble command off the queue 2185 ;; take previous disassemble command off the queue
2180 (save-excursion 2186 (save-excursion
2181 (set-buffer gud-comint-buffer) 2187 (set-buffer gud-comint-buffer)
2182 (let ((queue gdb-idle-input-queue) (item)) 2188 (let ((queue gdb-idle-input-queue) (item))
2183 (while queue 2189 (while queue
2184 (setq item (car queue)) 2190 (setq item (car queue))
2185 (if (equal (cdr item) '(gdb-assembler-handler)) 2191 (if (equal (cdr item) '(gdb-assembler-handler))
2186 (delete item gdb-idle-input-queue)) 2192 (delete item gdb-idle-input-queue))
2187 (setq queue (cdr queue))))) 2193 (setq queue (cdr queue)))))
2188
2189 (gdb-enqueue-idle-input 2194 (gdb-enqueue-idle-input
2190 (list (concat "server disassemble " gdb-main-or-pc "\n") 2195 (list (concat "server disassemble " gdb-main-or-pc "\n")
2191 'gdb-assembler-handler)) 2196 'gdb-assembler-handler))
2192 (gdb-set-pending-triggers 2197 (gdb-set-pending-triggers
2193 (cons 'gdb-invalidate-assembler 2198 (cons 'gdb-invalidate-assembler