From: William Xu <william.xwl@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: gdb mode with gdb command from the docker
Date: Tue, 20 Oct 2020 21:54:55 +0200 [thread overview]
Message-ID: <m2lfg0zn8w.fsf@gmail.com> (raw)
In-Reply-To: 83a6wjqt58.fsf@gnu.org
Eli Zaretskii <eliz@gnu.org> writes:
>> Also as I mentioned, if I run the gdbWrapper directly outside emacs, on
>> the terminal app (i'm running Terminal on macOS), there is no problem
>> seen at all.
>
> Of course: when the program is run from GDB under Emacs, the standard
> output and standard input of the program are connected to a PTY
> (pseudo-terminal), not to a real console device. So it is a small
> wonder that the behavior is different.
>
>> I think it is more likely something wrong inside emacs's
>> gdb mode.
>
> Maybe so, but I don't see what would cause this in gdb mode.
I manage to make it work by disabling the gdb "-inferior-tty-set"
command in gdb-inferior-io--init-proc.
It seems that the problem is that, process.c::allocate_pty allocates a
pseudo-terminal for the *host*, I can find the same tty name in /dev on
the host. It then confuses the gdb command from the docker container.
Is there any reason to call "-inferior-tty-set" commands here? Can we
simply remove it?
---------------------------------8<-------------------------------------
$ git diff
diff --git a/lisp/progmodes/gdb-mi.el b/lisp/progmodes/gdb-mi.el
index e785acd284..63dae4b248 100644
--- a/lisp/progmodes/gdb-mi.el
+++ b/lisp/progmodes/gdb-mi.el
@@ -1590,12 +1590,13 @@ gdb-inferior-io--init-proc
(set-process-filter proc 'gdb-inferior-filter)
(set-process-sentinel proc 'gdb-inferior-io-sentinel)
;; The process can run on a remote host.
- (let ((tty (or (process-get proc 'remote-tty)
- (process-tty-name proc))))
- (unless (or (null tty)
- (string= tty ""))
- (gdb-input
- (concat "-inferior-tty-set " tty) 'ignore))))
+ ;; (let ((tty (or (process-get proc 'remote-tty)
+ ;; (process-tty-name proc))))
+ ;; (unless (or (null tty)
+ ;; (string= tty ""))
+ ;; (gdb-input
+ ;; (concat "-inferior-tty-set " tty) 'ignore)))
+ )
(defun gdb-inferior-io-sentinel (proc _str)
(when (eq (process-status proc) 'failed)
---------------------------------8<-------------------------------------
--
William
next prev parent reply other threads:[~2020-10-20 19:54 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-10-18 15:08 gdb mode with gdb command from the docker William Xu
2020-10-18 15:57 ` Eli Zaretskii
2020-10-18 18:18 ` William Xu
2020-10-18 18:35 ` Eli Zaretskii
2020-10-20 19:54 ` William Xu [this message]
2020-10-21 16:10 ` Eli Zaretskii
2020-10-22 18:41 ` William Xu
2020-10-22 18:49 ` Eli Zaretskii
2020-10-22 19:27 ` William Xu
2020-10-18 18:48 ` Yuri Khan
2020-10-18 19:00 ` otadmor
2020-10-19 6:41 ` William Xu
2020-10-19 6:39 ` William Xu
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=m2lfg0zn8w.fsf@gmail.com \
--to=william.xwl@gmail.com \
--cc=help-gnu-emacs@gnu.org \
/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.
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).