我正在使用 Visual Studio Code 作为基于 golang 的应用程序的 ide。该应用程序将在 Linux 目标上运行。我想将 VSC 调试器附加到这个交叉编译的二进制文件。该二进制文件可以针对arm 或x86 平台进行编译。我知道 launch.json 文件可以实现这一点,但我从未使用过它。请帮忙。
调试器dlv用于调试go代码。 Delve 或 dlv 有一个限制,它只能附加到 64 位架构的二进制文件。因此,我为 64 位 amd 架构编译了代码,并在我的 Linux 机器上运行。接下来,我获取了二进制文件的进程 ID 并附加了深入研究。我为 delve 服务器使用了端口 2345
dlv Attach some_process_id --listen=:2345 --headless --api-version=2 --log
您可能还需要在 sudo 权限下启用/更改 Linux 目标上的调试级别。
cat 0 > /proc/sys/kernel/yama/ptrace_scope
在 Visual Studio Code IDE 上创建一个包含以下设置的 launch.json:
{ "name": "Launch Windows", "type": "go", "request": "attach", "mode": "remote", "remotePath": "path/to/binary", "port": 2345, "host": "target ip address" }
由于我是从 Windows 计算机运行 Visual Studio,因此我选择远程 Linux 目标的远程模式。
现在从 Visual Studio Code 运行调试器,launch.json 中的设置将在目标上查找 dlv 调试器/服务器并附加到它。在代码中放置一些断点,最好是在可以外部触发的地方。例如。在服务器上接受可以从客户端调用触发的调用。
以上是如何使用 Visual Studio Code IDE 附加到交叉编译的 go 二进制文件以进行调试?的详细内容。更多信息请关注PHP中文网其他相关文章!