我一直在尝试在本地调试我的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调试器吗?在上述情况下失败的原因是什么?
提前致谢
答案 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)