当前位置: 首页 > 知识库问答 >
问题:

Visual Studio 2017 Linux远程调试(gdbserver)

宰烈
2023-03-14
#include <cstdio>

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

开始调试后的消息(图片拍摄自VS2017)

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

已创建Process/home/.../projects/testlinuxdebug/bin/x64/debug/testlinuxdebug.out;pid=29277监听端口4444从主机127.0.0.1/build/gdb-9un5xp/gdb-7.11.1/gdb/GDBserver/regcache.c:264:检测到GDBserver内部的问题>。请求的未知寄存器ymm0h

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

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

共有1个答案

丘学海
2023-03-14

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

我查看了GDBServer上的源代码,似乎是处理器寄存器(YMM0H)出现了问题,该寄存器仅适用于i386处理器。

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

您可以在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中的这个示例。

 类似资料:
  • ThinkPHP5.0版本开始,提供了Socket日志驱动用于本地和远程调试。 Socket调试 只需要在配置文件中设置如下: return [ 'type' => 'socket', 'host' => 'slog.thinkphp.cn', //日志强制记录到配置的client_id 'force_cl

  • 前言 在通过串口调试嵌入式设备时,每次需要通过接线和 USB 转换器连接才能进行,对设备操作的话,存在一定的不便,并且会占用电脑的 USB 口,接线也会造成一定的不稳定,因此可以通过串口命令开启 telnet 或者 ssh 服务,远程登陆设备。通过系统命令、程序的输出以及 gdb 进行 远程调试,提高调试的便捷性。 调试案例 某路由器溢出漏洞调试 在 2.3.1 章节中对漏洞进行静态分析,现在来动

  • 使用Chrome开发人员工具调试原生Android应用中的WebView。 在Android 4.4(KitKat)或更高版本上,使用DevTools在原生Android应用中调试WebView内容。 TL;DR 在原生Android应用启用WebView调试;在Chrome DevTools中调试WebView。 通过chrome://inspect访问可调试的 WebView 列表。 WebV

  • 使用远程调试 为了与qemu配合进行源代码级别的调试,需要先让qemu进入等待gdb调试器的接入并且还不能让qemu中的CPU执行,因此启动qemu的时候,我们需要使用参数-S –s这两个参数来做到这一点。在使用了前面提到的参数启动qemu之后,qemu中的CPU并不会马上开始执行,这时我们启动gdb,然后在gdb命令行界面下,使用下面的命令连接到qemu: (gdb) target remot

  • 本文向大家介绍PHP远程调试之XDEBUG,包括了PHP远程调试之XDEBUG的使用技巧和注意事项,需要的朋友参考一下 开发的时候我都是使用XDebug在本地调试,但是最近加入一些项目中去,环境太复杂了,要在本地搭建一个开发环境真的太麻烦了,那么我们怎么使用xdebug来远程调试呢? 我这里使用虚拟机搭建了一个模拟环境来实验说明: 1.虚拟机IP:192.168.174.130 ,虚拟机用于搭建l

  • 在Windows,Mac 或 Linux 上远程调试 Android 设备上的实时内容。 TL;DR 设置你的Android设备进行远程调试,并从开发机中发现它。 从您的开发机器检查和调试Android设备上的实时内容。 将来自Android设备的内容屏播到DevTools。 要求 在开始远程调试之前,您需要︰ 在开发机上安装 chrome 32 或更高版本。 如果你使用的 Windows,请安装

  • 有人用过java的远程调试吗?发现代码中用到常量的时候取的好像是本地的,具体的场景是远程服务器上有个常量类没有更新,有个常量是不存在的,但是调试的时候依然可以执行代码,发现常量的值用的是本地类的,是不是因为常量是在编译期就生成了所以可以不依赖远程服务直接调用本地的就可以?

  • 问题内容: 我有一个在Linux机器上运行的Java应用程序。我使用以下命令运行Java应用程序: 我已经在此Linux机器上为TCP打开了端口4000。我使用Windows XP计算机上的eclipse,并尝试连接到此应用程序。我也在Windows中打开了端口。 这两台机器都在LAN上,但是我似乎无法将调试器连接到Java应用程序。我究竟做错了什么? 问题答案: 我注意到有些人在这里剪切和粘贴该