1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-29 11:02:01 +00:00

(gdb-breakpoints-list-handler-custom):

Handle watchpoints (bug#4282).
(def-gdb-thread-buffer-command): Enable thread to be selected by
clicking without selecting threads buffer first.
(gdb-current-context-command): Use selected frame so that "up",
"down" etc work in the GUD buffer.
(gdb-update): Find selected frame before rendering stack buffer.
(gdb-frame-handler): Set gdb-frame-number for stack buffer.
This commit is contained in:
Nick Roberts 2009-08-31 12:35:55 +00:00
parent 0afad2786e
commit 51f3f21d06

View File

@ -1611,10 +1611,7 @@ then no --frame option is added."
;; gdb-frame-number may be nil while gdb-thread-number is non-nil
;; (when current thread is running)
(if gdb-thread-number
(concat command " --thread " gdb-thread-number
(if (not (or noframe (not gdb-frame-number)))
(concat " --frame " gdb-frame-number) "")
" ")
(concat command " --thread " gdb-thread-number " ")
command))
(defun gdb-current-context-buffer-name (name)
@ -1653,6 +1650,8 @@ If `gdb-thread-number' is nil, just wrap NAME in asterisks."
(propertize "initializing..." 'face font-lock-variable-name-face))
(gdb-init-1)
(setq gdb-first-prompt nil))
(gdb-get-main-selected-frame)
;; We may need to update gdb-threads-list so we can use
(gdb-get-buffer-create 'gdb-threads-buffer)
;; gdb-break-list is maintained in breakpoints handler
@ -1660,8 +1659,6 @@ If `gdb-thread-number' is nil, just wrap NAME in asterisks."
(gdb-emit-signal gdb-buf-publisher 'update)
(gdb-get-main-selected-frame)
(gdb-get-changed-registers)
(when (and (boundp 'speedbar-frame) (frame-live-p speedbar-frame))
@ -2290,29 +2287,32 @@ HANDLER-NAME handler uses customization of CUSTOM-DEFUN. See
'BreakpointTable 'body))
(table (make-gdb-table)))
(setq gdb-breakpoints-list nil)
(gdb-table-add-row table '("Num" "Type" "Disp" "Enb" "Hits" "Addr" "What"))
(gdb-table-add-row table '("Num" "Type" "Disp" "Enb" "Addr" "Hits" "What"))
(dolist (breakpoint breakpoints-list)
(add-to-list 'gdb-breakpoints-list
(cons (gdb-get-field breakpoint 'number)
breakpoint))
(let ((at (gdb-get-field breakpoint 'at))
(pending (gdb-get-field breakpoint 'pending))
(func (gdb-get-field breakpoint 'func)))
(func (gdb-get-field breakpoint 'func))
(type (gdb-get-field breakpoint 'type)))
(gdb-table-add-row table
(list
(gdb-get-field breakpoint 'number)
(gdb-get-field breakpoint 'type)
type
(gdb-get-field breakpoint 'disp)
(let ((flag (gdb-get-field breakpoint 'enabled)))
(if (string-equal flag "y")
(propertize "y" 'font-lock-face font-lock-warning-face)
(propertize "n" 'font-lock-face font-lock-comment-face)))
(gdb-get-field breakpoint 'times)
(gdb-get-field breakpoint 'addr)
(or pending at
(concat "in "
(propertize func 'font-lock-face font-lock-function-name-face)
(gdb-frame-location breakpoint))))
(gdb-get-field breakpoint 'times)
(if (string-match ".*watchpoint" type)
(gdb-get-field breakpoint 'what)
(or pending at
(concat "in "
(propertize func 'font-lock-face font-lock-function-name-face)
(gdb-frame-location breakpoint)))))
;; Add clickable properties only for breakpoints with file:line
;; information
(append (list 'gdb-breakpoint breakpoint)
@ -2665,7 +2665,7 @@ be the value of 'gdb-thread property of the current line. If
'gdb-thread is nil, error is signaled."
`(defun ,name (&optional event)
,(when doc doc)
(interactive)
(interactive (list last-input-event))
(if event (posn-set-point (event-end event)))
(save-excursion
(beginning-of-line)
@ -3728,6 +3728,7 @@ overlay arrow in source buffer."
(when frame
(setq gdb-selected-frame (gdb-get-field frame 'func))
(setq gdb-selected-file (gdb-get-field frame 'fullname))
(setq gdb-frame-number (gdb-get-field frame 'level))
(let ((line (gdb-get-field frame 'line)))
(setq gdb-selected-line (or (and line (string-to-number line))
nil)) ; don't fail if line is nil