0

我试图将 DDD 附加到远程机器上的 gdb。我已将 rsh 配置为不需要我的机器和用户名的通行证。

ddd 打开时显示“rtx5:1234: not found”,并弹出“GDB 无法启动”。从调用 ddd --host rtx5:2159 --trace --no-exec-window /home/murray/beer-process

#  Running GDB (pid 2826, tty /dev/pts/1)...
#  Current language: C/C++
#  Searching "vsllib/ddd.vsl"...
#  Trying "/home/murray/.ddd/vsllib/ddd.vsl"
#  Trying "/usr/share/ddd-3.3.12/vsllib/ddd.vsl"
#  Searching "vsllib/ddd.vsl"..."/usr/share/ddd-3.3.12/vsllib/ddd.vsl".
<- "sh: line 0: exec: rtx5:2159: not found\n"
#  Running GDB (pid 2826, tty /dev/pts/1)...Exit 127.

ddd 从跟踪日志中启动的 GDB 的 PID 为 4 位。但是,我可以从 rtx(target) 看到的所有 PID 都是 8 位的。我无法将 gdb 视为一个进程,但跟踪日志表明并非如此。文档是否已过时并且我错误地调用它?我如何测试 ddd 是否正确 rsh-ing?

我已经解决了文档 2.4.1的注意事项:

  • Beer-process 二进制文件位于目标上我的用户名的主目录中。
  • 检查 /usr/bin/gdb 中 gdb 的路径
  • rtx5 没有 xterm 因此包括 --no-exec-window 标志

提前致谢

4

1 回答 1

0

TLDR:主机上有防火墙,仅干扰 ddd 的 rsh 连接。我还必须用“rtx5”替换“'rsh rtx5'”。它不会找到我通过它的程序,即使它在远程目标的主目录中。但是,我可以使用 ddd-gui 来查找、加载和调试它。

我可以在没有密码的情况下 rsh 到 rtx5,然后调用 gdb。我无法执行“rsh rtx5 gdb”并启动 gdb。这是由于rsh。当 rsh 在没有命令的情况下被调用时,它会在 514 之外运行。如果 rsh 在用命令调用时,它会进行通信并尝试移动到不同的端口号。这是我的防火墙阻止它的地方。
在 rsh 连接后,Wireshark 向我展示了从本地到目标:

destination unreachable (host administratively protected) 

ddd 仍然存在主要问题,即我无法加载远程主目录中的二进制文件。这将问题扩展到附加到远程主机上正在运行的进程。在这两种情况下,一旦建立连接,我就可以通过 gui 加载/连接。
此外,我必须在远程主机名前加上“rsh”来调用 ddd。这似乎是错误的。当我有更多时,我会更新。

于 2016-12-14T22:11:12.800 回答