在远程计算机(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模式。

然后,我开始调试并得到以下消息:



Message after starting to debugging (Image captured from VS2017)

顺便说一句,我从Visual Studio 2017调试菜单的Linux控制台窗口中收到以下消息:



Message from Linux Console Window (Image captured from VS2017)

有人可以帮我解决这个问题吗?

最佳答案

我在Ubuntu 16.04计算机上遇到了完全相同的问题。

我浏览了gdbserver上的源代码,这似乎是处理器寄存器(ymm0h)的问题,该寄存器仅适用于 i386 处理器。

问题是,我不知道如何修复gdbserver以便不特别使用该寄存器,但是您可以通过在Ubuntu计算机上将gdbgdbserver升级到8.3版本来解决错误。如果我的猜测是正确的,那么版本8.1是解决此问题的版本,但是默认情况下,Ubuntu 16.04的7.11.1gdb都有版本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尝试该示例。

祝你好运!

10-05 19:16