使用目标远程localhost:26000

时间:2018-05-03 14:50:05

标签: gdb gdbserver

我一直在尝试在本地调试我的xv6(它是一个32位代码)。但我正在使用64位机器,而我的gdb是64位。每当我输入

  

制作gdb

我遇到以下错误

+ target remote localhost:26000
.gdbinit:23: Error in sourced command file:
localhost:26000: Connection timed out.
(gdb) target remote localhost:26000
localhost:26000: Connection timed out.

我有一个.gdbinit文件。我在其中有以下行

  

目标远程localhost:26000

它在此行返回错误。我最初认为这是因为我的机器的32位架构。但是,如果我转到其他目录并在gdb控制台中键入相同的消息,我收到相同的错误。我实际上无法理解为什么它应该连接到localhost(即这里需要一个服务器?)因为GDB是一个普通的GNU调试器吗?在上述情况下失败的原因是什么?

提前致谢

3 个答案:

答案 0 :(得分:1)

你的问题对我来说没有任何意义。

据我所知,您在问:"为什么GDB会尝试连接到localhost:2600"。

答案是:因为您要求 GDB使用target remote localhost:26000中的~/.gdbinit条目进行操作。

<强>更新

  

我在问这个命令是做什么的?

它指示GDB执行远程调试,并连接到gdbserver侦听给定端口。

通常,您不应该在您不了解的~/.gdbinit(或任何其他初始化文件)中添加任何内容。这样做类似于采取一个未知的物体(一把枪),把它放在你的头上,并在侧面挤压一个小杠杆(触发器)。

  

并执行它给我上面的错误所以你能说出错是什么?以及如何解决它

只需从~/.gdbinit删除命令(以及您不知道其含义的任何其他命令)。

答案 1 :(得分:1)

我刚刚解决了您描述的相同问题。您可以看一下GNUmakefile来搜索您的gdb-qemu试图连接的端口号。在我的GNUmakefile中,端口号是 # try to generate a unique GDB port GDBPORT := $(shell expr id -u % 5000 + 25000)
因此,当我尝试运行sudo make gdb-qemu时,结果如下:

qemu-system-i386 -drive file=obj/kern/kernel.img,index=0,media=disk,format=raw -serial mon:stdio -gdb tcp::25000 -D qemu.log  -S  

但是当我运行另一个终端来运行sudo make gdb时,我得到了结果:

Type "apropos word" to search for commands related to "word".
+ target remote localhost:26000

端口号不匹配。
因此,只需将GNUmakefile中的端口号修改为26000,就可以得到理想的结果。
希望对您有所帮助:)

答案 2 :(得分:-1)

我曾经遇到过与您相同的问题。这个问题困扰了我好几个小时。 但是这个问题很简单。请执行以下命令。

  1. 制作qemu-gdb enter image description here

  2. 创建gdb(在另一个终端中。)

此问题的原因是,当您执行 make gdb 命令时,您结束了 make gdb 的执行。因此,qemu服务器连接超时。 在图片中,我们找不到其他信息,例如远程gdb端口...