[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v
From: |
Nick Roberts |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v |
Date: |
Wed, 23 Apr 2008 02:50:24 +0000 |
CVSROOT: /sources/emacs
Module name: emacs
Changes by: Nick Roberts <nickrob> 08/04/23 02:50:24
Index: gdb-ui.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/progmodes/gdb-ui.el,v
retrieving revision 1.235
retrieving revision 1.236
diff -u -b -r1.235 -r1.236
--- gdb-ui.el 22 Apr 2008 06:25:15 -0000 1.235
+++ gdb-ui.el 23 Apr 2008 02:50:24 -0000 1.236
@@ -110,7 +110,7 @@
(defvar gdb-pc-address nil "Initialization for Assembler buffer.
Set to \"main\" at start if `gdb-show-main' is t.")
(defvar gdb-frame-address nil "Identity of frame for watch expression.")
-(defvar gdb-previous-frame-address nil)
+(defvar gdb-previous-frame-pc-address nil)
(defvar gdb-memory-address "main")
(defvar gdb-previous-frame nil)
(defvar gdb-selected-frame nil)
@@ -585,7 +585,7 @@
;; (re-)initialize
(setq gdb-pc-address (if gdb-show-main "main" nil))
- (setq gdb-previous-frame-address nil
+ (setq gdb-previous-frame-pc-address nil
gdb-memory-address "main"
gdb-previous-frame nil
gdb-selected-frame nil
@@ -3542,7 +3542,7 @@
(if (or (not (member 'gdb-invalidate-assembler
gdb-pending-triggers))
(not (string-equal gdb-pc-address
- gdb-previous-frame-address)))
+ gdb-previous-frame-pc-address)))
(progn
;; take previous disassemble command, if any, off the queue
(with-current-buffer gud-comint-buffer
@@ -3558,16 +3558,20 @@
gdb-pc-address "\n")
'gdb-assembler-handler))
(push 'gdb-invalidate-assembler gdb-pending-triggers)
- (setq gdb-previous-frame-address gdb-pc-address)
+ (setq gdb-previous-frame-pc-address gdb-pc-address)
(setq gdb-previous-frame gdb-selected-frame)))))))
(defun gdb-get-selected-frame ()
(if (not (member 'gdb-get-selected-frame gdb-pending-triggers))
(progn
+ (if (string-equal gdb-version "pre-6.4")
+ (gdb-enqueue-input
+ (list (concat gdb-server-prefix "info frame\n")
+ 'gdb-frame-handler))
(gdb-enqueue-input
- (list (concat gdb-server-prefix "info frame\n") 'gdb-frame-handler))
- (push 'gdb-get-selected-frame
- gdb-pending-triggers))))
+ (list "server interpreter mi -stack-info-frame\n"
+ 'gdb-frame-handler-1)))
+ (push 'gdb-get-selected-frame gdb-pending-triggers))))
(defun gdb-frame-handler ()
(setq gdb-pending-triggers
@@ -3631,6 +3635,28 @@
(gdb-force-mode-line-update
(propertize "ready" 'face font-lock-variable-name-face)))
+;; Used for -stack-info-frame but could be used for -stack-list-frames too.
+(defconst gdb-stack-list-frames-regexp
+".*?level=\"\\(.*?\\)\",.*?addr=\"\\(.*?\\)\",.*?func=\"\\(.*?\\)\",\
+\\(?:.*?file=\".*?\",.*?fullname=\"\\(.*?\\)\",.*?line=\"\\(.*?\\)\".*?}\\|\
+from=\"\\(.*?\\)\"\\)")
+
+(defun gdb-frame-handler-1 ()
+ (setq gdb-pending-triggers
+ (delq 'gdb-get-selected-frame gdb-pending-triggers))
+ (goto-char (point-min))
+ (when (re-search-forward gdb-stack-list-frames-regexp nil t)
+ (setq gdb-frame-number (match-string 1))
+ (setq gdb-pc-address (match-string 2))
+ (setq gdb-selected-frame (match-string 3))
+ (if (gdb-get-buffer 'gdb-locals-buffer)
+ (with-current-buffer (gdb-get-buffer 'gdb-locals-buffer)
+ (setq mode-name (concat "Locals:" gdb-selected-frame))))
+ (if (gdb-get-buffer 'gdb-assembler-buffer)
+ (with-current-buffer (gdb-get-buffer 'gdb-assembler-buffer)
+ (setq mode-name (concat "Machine:" gdb-selected-frame)))))
+ (gdb-invalidate-assembler))
+
; Uses "-var-list-children --all-values". Needs GDB 6.4 onwards.
(defun gdb-var-list-children-1 (varnum)
(gdb-enqueue-input
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/03
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Miles Bader, 2008/04/05
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/05
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/12
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/17
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/19
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/19
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Glenn Morris, 2008/04/21
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/22
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/22
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v,
Nick Roberts <=
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Miles Bader, 2008/04/23
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/24
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/24
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/25
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/28
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Miles Bader, 2008/04/28
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/29
- [Emacs-diffs] Changes to emacs/lisp/progmodes/gdb-ui.el,v, Nick Roberts, 2008/04/29