unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
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




  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).