首页 > 解决方案 > Visual Studio 2019 在非 POSIX ARM 设备上远程调试 GDB

问题描述

我已经安装了 Visual Studio 2019 并尝试设置一个开发环境,允许我在 WSL 上交叉编译 ARM11,将其部署到我的设备,并将 Visual Studio 的调试器附加到在设备上运行的自定义 gdb 服务器。大多数提到使用 Visual Studio 使用 GDB 进行远程调试时首先提到使用 SSH 连接到机器。我尝试远程调试的设备不是 POSIX,也没有用于 SSH 的 shell,只是端口 4000 上的内置 GDB 服务器。

我知道它有效,因为使用 WSL,以下有效:

$ gdb-multiarch application.elf
GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
<GNU Licensing crap>
Reading symbols from application.elf...done.
(gdb) target remote 192.168.43.121:4000
Remote debugging using 192.168.43.121:4000
warning: Target description specified unknown osabi "3DS"
svcWaitSynchronization () at /home/fincs/pacman-packages/libctru/src/libctru-2.0.0/libctru/source/svc.s:263
263     /home/fincs/pacman-packages/libctru/src/libctru-2.0.0/libctru/source/svc.s: No such file or directory.
(gdb) cont
Continuing.
Start calloc test... micros elapsed: 1.592000 <-- from device's stderr

知道这工作得非常好,我想尝试使用这个介绍 Visual Studio,因为我真的很喜欢 IDE 的调试功能。根据他们对 VS 与 GDB 接口能力的描述,我认为应该可以挂接到我的 2DS 上的调试服务器。但是,我能够弄清楚并尝试的只是在 Visual Studio 的连接管理器中添加一个无身份验证连接,也许我可以从那里将它用于调试任务,但是当我尝试时会发生这种情况:

带有错误消息的调试器连接尝试

所以我停在这里。我不确定还能尝试什么。我也不认为这是最后的障碍,因为另外两件事与gdb-multiarch我通过 WSL 工作的过程并不真正匹配,即:

  1. 我看不到任何方法可以向 Visual Studio 指定要使用的符号文件,就像我为 GDB ( application.elf) 所做的那样。我想也许由于是 IDE,它无论如何都会有这些。
  2. 由于我在 x86 机器上进行调试,我不确定 Visual Studio 是否能够理解 ARM11 gdb 服务器。这就是我gdb-multiarch在通过 WSL 执行此操作时使用的原因。使用默认 gdb 不会产生结果。

我怎样才能继续让 Visual Studio 与这个无身份验证的 ARM11 gdb 服务器很好地配合?

标签: visual-studiodebuggingarmgdbwindows-subsystem-for-linux

解决方案


推荐阅读