如何通过 gdbserver 会话访问 STDIN/STDOUT

All*_*lan 5 gdb remote-debugging

如果我开始一个正常的“gdb”会话,那么我可以直接在终端中访问STDIN和查看STDOUT

$ gdb wc
GNU gdb (Gentoo 7.10.1 vanilla) 7.10.1
...
gdb> run
Starting program: /usr/bin/wc 
asdf
      1       1       5
[Inferior 1 (process 28131) exited normally]
gdb> quit
$ 
Run Code Online (Sandbox Code Playgroud)

我可以用 gdbserver 做同样的事情吗???

这是我尝试过的(gdbserver):

$ gdbserver /dev/ttyS0 wc
Process wc created; pid = 28156
Listening on port 2345
Run Code Online (Sandbox Code Playgroud)

和客户:

$ gdb
GNU gdb (Gentoo 7.10.1 vanilla) 7.10.1
...
gdb> c
Continuing.

Program received signal SIGINT, Interrupt.
0x00007ffff7ddbc40 in _start () from target:/lib64/ld-linux-x86-64.so.2
gdb>
Run Code Online (Sandbox Code Playgroud)

但是,使用 gdbserver 时似乎STDIN/STDOUT未连接。

如何通过串行线路运行远程调试,并访问我正在同一串行线路上调试的应用程序的STDIN/ STDOUT

Emp*_*ian 2

如何通过串行线路运行远程调试,并访问我正在通过同一串行线路调试的应用程序的 STDIN/STDOUT?

您需要使用screentmuxgdb<->gdbserver通过单条串行线路来复用和键盘->应用程序流量。