首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual 2017 Linux远程调试(gdbserver)

Visual 2017 Linux远程调试(gdbserver)
EN

Stack Overflow用户
提问于 2018-06-29 11:29:35
回答 2查看 2.4K关注 0票数 4

在远程计算机(Ubuntu16.04.4LTS)上安装gdbserver之后,我在Visual 2017中创建了一个“跨平台控制台应用程序(linux)”项目,测试了以下c++代码:

代码语言:javascript
复制
#include <cstdio>

int main()
{
    printf("hello from testLinuxDebug!\n");
    return 0;
}

我将Ubuntu机器的连接信息(ip地址、id、密码)添加到连接管理器中,并选择"gdbserver“进行调试。

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

无法开始调试。来自命令“-解释器-exec控制台”的意外GDB输出“目标远程localhost63361”。远程连接关闭。

开始调试后的消息(从VS2017捕获的图像)

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

创建进程/home/.../projects/testLinuxDebug/bin/x64/Debug/testLinuxDebug.out;pid = 29277侦听来自主机127.0.0.1 /build/gdb-9un5Xp/gdb-7.11.1/gdb/gdbserver/regcache.c:264:的端口4444远程调试。检测到GDBserver的内部问题>内部问题。请求未知寄存器ymm0h

来自Linux控制台窗口的消息(从VS2017捕获的图像)

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

EN

回答 2

Stack Overflow用户

发布于 2019-05-20 07:54:49

在我的Ubuntu16.04机器上,我也遇到了同样的问题。

我在gdbserver上查看了源代码,它似乎是处理器寄存器(ymm0h)的一个问题,它只对i386处理器可用。

问题是,我不知道如何修复gdbserver以避免特别使用此寄存器,但是您可以通过将gdb & gdbserver升级到Ubuntu机器上的8.3版本来解决错误。如果我的猜测是正确的,8.1版本就是解决这个问题的版本,但是在默认情况下,Ubuntu16.04为gdbgdbserver都提供了版本7.11.1

您可以在linux机器上运行以下命令:

代码语言:javascript
复制
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

代码语言:javascript
复制
sudo apt-get install libreadline6-dev texinfo

如果您在安装gdb时仍然有问题,请从Linux从零开始中尝试这个示例。

祝好运!

票数 2
EN

Stack Overflow用户

发布于 2020-04-22 11:05:53

我遇到了与您相同的问题,尽管对我来说,问题是在微软的平台上--我无法使用pwntools的gdb.debug/gdb.attach功能(该功能依赖于gdbserver),原因是VSOnline的对接环境中出现了同样的错误。

把这个答案留给那些可能遇到和我一样的问题的人。

问题和步骤非常类似于什么卡内拉 --问题的根源确实是环境中的旧GDB版本(撰写本文时为7.12)。

我已经用python3绑定编译了GDB,如果您打算使用全球环境基金或类似的GDB扩展,您可能也需要这样做。

下面是如何在您的VSOnline环境的终端中这样做:

代码语言:javascript
复制
# I needed to get rid of the apt-provided gdb for it to work properly
sudo apt remove gdb
# VSOnline has a weird way of handling python versions
# you're better off installing python3 from apt, if it's not installed yet
sudo apt update
sudo apt install libreadline6-dev texinfo python3 python3-dev
wget "http://ftp.gnu.org/gnu/gdb/gdb-8.3.tar.gz"
tar xzf gdb-8.3.tar.gz
cd gdb-8.3
mkdir build && cd build
../configure --prefix=/usr --with-system-readline --with-python=/usr/bin/python3
make
sudo make install
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51100753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档