From: Nick Roberts <nickrob@snap.net.nz>
To: Pierre-Louis Escouflaire <esf@cfmu.eurocontrol.int>
Cc: bug-gnu-emacs@gnu.org
Subject: Re: gud-mode --annotate=3 and synchronization problems
Date: Sun, 2 Sep 2007 15:26:36 +1200 [thread overview]
Message-ID: <18138.11628.322522.847574@kahikatea.snap.net.nz> (raw)
In-Reply-To: <200708301558.l7UFw7nB027463@carp.cfmu.corp.eurocontrol.int>
> Typing commands before gdb is ready makes gud-mode confused.
I've looked at this more carefully now. Does the patch below fix it if you use
M-x gdba? (As a general note, if you want to use GDB in graphical mode it's
better to use M-x gdba than M-x gdb)
> Also note the command being repeated on quit using Ctrl-D (^D).
I thought we had solved this problem. Can you be more specific? Does it
still happen with M-x gdba
> We also noticed some other synchronization problems.
> We are currently trying to reproduce them.
Please post them here when possible.
--
Nick http://www.inet.net.nz/~nickrob
*** gud.el 13 Aug 2007 20:51:56 +1200 1.129.2.6
--- gud.el 02 Sep 2007 15:20:41 +1200
*************** If SOFT is non-nil, returns nil if the s
*** 104,109 ****
--- 104,111 ----
"Non-nil if debugged program is running.
Used to grey out relevant toolbar icons.")
+ (defvar gdb-ready nil)
+
;; Use existing Info buffer, if possible.
(defun gud-goto-info ()
"Go to relevant Emacs info node."
*************** session."
*** 764,769 ****
--- 766,772 ----
(setq comint-prompt-regexp "^(.*gdb[+]?) *")
(setq paragraph-start comint-prompt-regexp)
(setq gdb-first-prompt t)
+ (setq gdb-ready nil)
(setq gud-filter-pending-text nil)
(run-hooks 'gdb-mode-hook))
*** gdb-ui.el 13 Aug 2007 20:51:56 +1200 1.206.2.4
--- gdb-ui.el 02 Sep 2007 15:23:48 +1200
*************** detailed description of this mode.
*** 270,275 ****
--- 270,279 ----
;;
(interactive (list (gud-query-cmdline 'gdba)))
;;
+ ;; Do this early in case user enters commands before GDB is ready.
+ (setq comint-input-sender 'gdb-send)
+ (setq gdb-ready nil)
+
;; Let's start with a basic gud-gdb buffer and then modify it a bit.
(gdb command-line)
(gdb-init-1))
*************** The key should be one of the cars in `gd
*** 1124,1143 ****
(defun gdb-send (proc string)
"A comint send filter for gdb.
This filter may simply queue input for a later time."
! (with-current-buffer gud-comint-buffer
! (let ((inhibit-read-only t))
! (remove-text-properties (point-min) (point-max) '(face))))
! (if gud-running
! (progn
! (let ((item (concat string "\n")))
! (if gdb-enable-debug (push (cons 'send item) gdb-debug-log))
! (process-send-string proc item)))
! (if (string-match "\\\\\\'" string)
! (setq gdb-continuation (concat gdb-continuation string "\n"))
! (let ((item (concat gdb-continuation string
! (if (not comint-input-sender-no-newline) "\n"))))
! (gdb-enqueue-input item)
! (setq gdb-continuation nil)))))
;; Note: Stuff enqueued here will be sent to the next prompt, even if it
;; is a query, or other non-top-level prompt.
--- 1128,1148 ----
(defun gdb-send (proc string)
"A comint send filter for gdb.
This filter may simply queue input for a later time."
! (when gdb-ready
! (with-current-buffer gud-comint-buffer
! (let ((inhibit-read-only t))
! (remove-text-properties (point-min) (point-max) '(face))))
! (if gud-running
! (progn
! (let ((item (concat string "\n")))
! (if gdb-enable-debug (push (cons 'send item) gdb-debug-log))
! (process-send-string proc item)))
! (if (string-match "\\\\\\'" string)
! (setq gdb-continuation (concat gdb-continuation string "\n"))
! (let ((item (concat gdb-continuation string
! (if (not comint-input-sender-no-newline) "\n"))))
! (gdb-enqueue-input item)
! (setq gdb-continuation nil))))))
;; Note: Stuff enqueued here will be sent to the next prompt, even if it
;; is a query, or other non-top-level prompt.
*************** buffers."
*** 2996,3002 ****
(gdb-get-buffer-create 'gdb-breakpoints-buffer)
(if gdb-show-main
(let ((pop-up-windows t))
! (display-buffer (gud-find-file gdb-main-file))))))
(defun gdb-get-location (bptno line flag)
"Find the directory containing the relevant source file.
--- 3001,3008 ----
(gdb-get-buffer-create 'gdb-breakpoints-buffer)
(if gdb-show-main
(let ((pop-up-windows t))
! (display-buffer (gud-find-file gdb-main-file)))))
! (setq gdb-ready t))
(defun gdb-get-location (bptno line flag)
"Find the directory containing the relevant source file.
next prev parent reply other threads:[~2007-09-02 3:26 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-30 15:58 gud-mode --annotate=3 and synchronization problems Pierre-Louis Escouflaire
2007-08-31 5:18 ` Nick Roberts
2007-09-01 4:06 ` Richard Stallman
2007-09-02 3:26 ` Nick Roberts [this message]
-- strict thread matches above, loose matches on Subject: below --
2007-09-04 11:47 Pierre-Louis Escouflaire
2007-09-05 5:20 ` Nick Roberts
2007-09-05 15:53 ` Pierre-Louis Escouflaire
2007-09-06 7:08 ` Nick Roberts
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=18138.11628.322522.847574@kahikatea.snap.net.nz \
--to=nickrob@snap.net.nz \
--cc=bug-gnu-emacs@gnu.org \
--cc=esf@cfmu.eurocontrol.int \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).