在我的远程机器(Ubuntu 16.04.4 LTS)上安装 gdbserver 后,我通过在 Visual Studio 2017 中创建一个“跨平台控制台应用程序(linux)”项目来测试以下 c++ 代码:
#include <cstdio>
int main()
{
printf("hello from testLinuxDebug!\n");
return 0;
}
我将我的 Ubuntu 机器的连接信息(IP 地址、ID、密码)添加到连接管理器,并选择“gdbserver”作为 Debug模式。
然后我开始调试并得到以下信息:
Unable to start debugging. Unexpected GDB output from command "-interpreter-exec console "target remote localhost63361"". Remote connection closed.
Message after starting to debugging (Image captured from VS2017)
顺便说一句,我从 Visual Studio 2017 的调试菜单的 Linux 控制台窗口中收到以下消息:
Process /home/.../projects/testLinuxDebug/bin/x64/Debug/testLinuxDebug.out created; pid = 29277 Listening on port 4444 Remote debugging from host 127.0.0.1 /build/gdb-9un5Xp/gdb-7.11.1/gdb/gdbserver/regcache.c:264: A problem > internal to GDBserver has been detected. Unknown register ymm0h requested
Message from Linux Console Window (Image captured from VS2017)
谁能帮我解决这个问题?
最佳答案
我在我的 Ubuntu 16.04 机器上遇到了完全相同的问题。
我查看了 gdbserver
上的源代码,这似乎是处理器寄存器 (ymm0h
) 的问题,它只适用于 i386 处理器。
问题是,我不知道如何修复 gdbserver
不使用这个寄存器,但是你可以通过升级你的 gdb
& gdbserver
到 Ubuntu 机器上的版本 8.3
。如果我的猜测是正确的,版本 8.1
是修复此问题的版本,但默认情况下,Ubuntu 16.04 的 7.11.1
版本适用于 gdb
& gdbserver
.
您可以在 linux 机器上运行这些命令来执行此操作:
wget "http://ftp.gnu.org/gnu/gdb/gdb-8.3.tar.gz"
tar xzf gdb-8.3.tar.gz
cd gdb-8.3
./configure --prefix=/usr --with-system-readline
make
sudo make install
您可能需要安装一些额外的包才能编译 gdb
:
sudo apt-get install libreadline6-dev texinfo
如果您在尝试安装 gdb 时仍然遇到问题,请尝试来自 Linux from Scratch 的示例.
祝你好运!
关于c++ - Visual Studio 2017 Linux远程调试(gdbserver),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51100753/