如何使用 root 权限在 VS Code 中调试 Go 文件?

2024-02-04

如何强制 Delve in VS Code 使用 root 权限?

我正在尝试调试涉及 gopacket/pcap 的 go 文件:

hndl, err := pcapgo.NewEthernetHandle(ifname)
// err == "couldn't open packet socket: operation not permitted"

使用启动相同的程序sudo不会触发错误。

我尝试了几种方法:

  1. Launch sudo code .它警告说不建议这样做。另外,由于环境变量混乱,因此在此模式下使用 dlv 会出现问题。
  2. 使用本指南https://fatdragon.me/blog/2020/06/debug-golang-vs-code-linux-root https://fatdragon.me/blog/2020/06/debug-golang-vs-code-linux-root。然而"go.alternateTools"似乎对“dlv”一无所知:Property dlv is not allowed.指南中可能缺少某些内容。
  3. 搜索.vscode/launch.json允许 sudo 的配置属性。 VSC 允许这样做Python https://stackoverflow.com/questions/48144580/how-to-launch-python-in-visual-studio-code-with-superuser-permission-or-root-per,但不适用于 Go。

有没有什么简单的方法可以使用 root 权限启动调试器?

环境:

  • 乌班图18.04
  • VSCode 1.48.0
  • 去1.13.4
  • 深入研究1.4.0

2022 年 5 月更新

以 root 身份调试程序和测试 https://github.com/golang/vscode-go/blob/master/docs/debugging.md#debugging-programs-and-tests-as-rootVSCode Go 插件的文档中已相应更新了任务和启动配置示例,不仅可以调试程序,还可以以 root 身份进行测试。

Old

使用 VSCode 调试需要 root 权限的 Go 程序和测试一直很痛苦。从 VSCode 版本 1.65.0 开始,我注意到一个新的实验性启动选项"asRoot": "true"???? 需要结合"console": "integratedTerminal".

例如,在你的launch.json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Test/dbg pkg as root",
            "type": "go",
            "request": "launch",
            "mode": "test",
            "program": "${fileDirname}",
            "console": "integratedTerminal",
            "asRoot": true,
        },
    ]
}

当按 F5 启动此配置时,将打开一个新的调试终端会话(或可能被重用)并执行以下命令:

/usr/bin/env GOPATH=/home/foobar/go /usr/bin/sudo /home/foobar/go/bin/dlv dap --check-go-version=false --client-addr=:41945

现在会自动插入sudo之前的命令dlv本身,因此需要将其启动到内部或外部交互中terminal(因此在内部控制台中不起作用)。验证 sudo 后,VSCode 会切换回调试控制台视图,您就可以开始了。

现在,这避免了重新映射的麻烦dlv将工作区中的命令转换为包装器 shell 脚本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 root 权限在 VS Code 中调试 Go 文件? 的相关文章

  • 无法连接到代理“证书由未知机构签名”

    我正在尝试通过 Kubernetes 部署上的 cloudsql proxy 容器连接到 CloudSQL 实例 我已安装 cloudsql 凭据以及值GOOGLE APPLICATION CREDENTIALS set 但是 我的日志中仍
  • Visual Studio Code 无法检测已安装的 git 并且“启动 git 时出错:文件名或扩展名太长”。

    我已经查看了大多数描述标题上的第一个错误的帖子 Visual Studio Code 无法检测已安装的 git 尽管如此 我相信第二个错误 启动 git 时出错 文件名或扩展名太长 生成第一个 你可以帮帮我吗 Git 在使用 Git Bas
  • 是否支持动态变量?

    我想知道Go中是否可以动态创建变量 我在下面提供了一个伪代码来说明我的意思 我将新创建的变量存储在切片中 func method slice make type for i 0 i lt 10 i var variable i i slic
  • 无法找到可用的空闲守护进程

    我正在尝试在 Visual Studio Code 中将 Talon SRX 与 WPILib 一起用于 First Robotics for Java 我按照此处的说明进行操作 https phoenix documentation re
  • 按引用或按值扫描功能

    我有以下代码 statement SELECT id from source where mgmt 1 var exists string errUnique dr db QueryRow statement mgmt Scan exist
  • Golang 基础知识 struct 和 new() 关键字

    我正在学习 golang 当我阅读描述结构的章节时 我遇到了初始化结构的不同方法 p1 passport var p2 passport p3 passport Photo make byte 0 0 Name Scott Surname
  • 投射回更专业的界面

    我正在用 Go 编写一个游戏 在 C 中 我将所有实体类存储在 BaseEntity 类的数组中 如果一个实体需要在世界中移动 那么它将是一个从 BaseEntity 派生的 PhysEntity 但添加了方法 我尝试模仿这是 go pac
  • nsq 无法通过连接到 nsqlookupd 来消费消息

    我尝试使用 docker compose 来运行 nsq docker compose yml如下 version 3 services nsqlookupd image nsqio nsq command nsqlookupd ports
  • Go 无法推断赋值中的类型:“non-name on left side of :=”

    该片段按预期工作play golang org p VuCl OKMav http play golang org p VuCl OKMav i 10 next 11 prev i i next 然而这个几乎相同的片段给出了non name
  • 如何修复“没有这样的文件或目录,lstat 'scss/'”?

    我正在尝试遵循 youtube 上的简单教程他尝试使用终端运行 npm 脚本 sass 文件 当我执行命令时npm 运行 sass显示错误消息错误 ENOENT 没有这样的文件或目录 lstat scss 我认为问题在于文件的路径或文件的权
  • Go 的范围不能超过 (类型接口 {})

    我正处于尝试将我的注意力集中在 Go 上的婴儿阶段 目前 我正在模拟一个 API 请求 该请求返回包含对象数组的 JSON 格式的字符串 我试图找出迭代每个记录并访问每个字段的最合适的方法 最终 每个字段都将写入 Excel 电子表格 但现
  • 如何更改 Visual Studio Code“Powershell 集成控制台”?

    有谁知道如何安装 更新 PS 7 以供 VS Code Powershell 集成控制台使用 我可以在常规 powershell 终端上获取 PS 7 但 Powershell 集成控制台仍然是 PSVersion 5 1 我似乎不知道如何
  • 重新插入通道导致死锁

    我有稳定的入站 作业 流 将其输入到无缓冲通道中 我有一个for range循环来迭代项目并处理它们 如果处理该项目失败 我会将项目重新插入通道中 以便稍后重试 问题是当我将项目重新插入通道时 它陷入僵局 我明白为什么会发生这种情况 处理器
  • 如何从 Chrome React Dev Tools 打开 VS code 中的组件文件?

    是否可以右键单击 React Dev 工具下可见的组件 然后单击 在 IDE 中显示 从而在 VSCode 中打开该文件 这将是有益的 因为我不必去寻找该组件 我经常想在 VS Code 中查看某个组件的源代码 但由于组件的模块化复用 代码
  • Xdebug V3 不会停止 VSCode 中的断点

    我正在尝试使用 VSCode 在 XAMPP 上进行调试 但没有成功 我知道有很多关于这个的问题 我已经尽了一切努力 但仍然行不通 我的 xdebug 扩展确实有一件奇怪的事情 我目前使用 PHP v7 4 12 和 Xdebug 版本 3
  • VS Code 中取消缩进行

    有没有相当于editor actions indentLines将选定的行移动到左侧而不是右侧 我知道您可以使用 Tab Shift Tab 进行缩进 但不幸的是 这在 Vim 模式下不起作用 这就是所谓的 突出 查看命令 key shif
  • Go 编程语言中的“方法需要指针接收器”

    我刚刚看到了 Go 编程语言的演示 并想尝试写几行 一切工作正常 直到我尝试在这种情况下使用界面 我该如何解决这个问题 package main import fmt type entity float32 func e entity in
  • 如何在 VSCode 中的 switch-case 语句中自动缩进?

    有点令人沮丧的是 vscode 会自动执行很多操作 但是当使用 switch case 语句时 它不会在冒号后自动缩进 这就是如果我在不干扰的情况下打字的话我会得到的结果 int x 32 switch x case 33 break ca
  • 使用 VSCode 对某些 YAML 字段进行自定义语法突出显示

    我们的基础设施使用 YML 文件来配置各种流程 例如 非常简化的 配置块可能如下所示 process my process requires other process parameter dockerfile FROM alpine RU
  • 是否可以使用 go:generate 重定向 stdin/stdout

    我有一个充当管道的工具 它从标准输入读取数据并将源代码写入标准输出 是否可以设置输入 输出重定向并将此类工具与 go generate 一起使用 就像是 go generate tool lt file txt gt file go 我想出

随机推荐

  • 这里 typename 是否是必需的?

    考虑代码 include
  • App Store 中显示的语言错误!

    上周我向 App Store 发布了我的第一个应用程序 我所看到的是 应用程序商店中显示的应用程序语言不正确 我的应用程序只有德语版本 但在 App Store 中显示的是英语 有人可以告诉我我到底该怎么做才能使应用商店中的语言为德语吗 我
  • 如何在 iPhone 或 iPad 上获取路线

    您好 我想在我的应用程序中显示类似以下内容 您的目的地是西北 400 英尺 我目前使用 getDistanceFrom 方法 但这只能提供两个位置之间的脚 感谢您的帮助 您可能应该简单地使用纬度经度方程来计算方位角 然后将某些方位角范围设置
  • 如何高效识别二进制文件

    识别二进制文件最有效的方法是什么 我想从二进制文件中提取某种签名 并用它与其他文件进行比较 暴力方法是使用整个文件作为签名 这将花费太长的时间和太多的内存 我正在寻找一种更聪明的方法来解决这个问题 并且我愿意为了性能而牺牲一点准确性 但不是
  • 使用C#和YubiKey添加winlogon登录方法

    至于个人乐趣和挑战 我想添加一种在我自己的个人电脑上登录的方式 目前所有用户都使用 Windows 7 通常这会使用 ICredentialProvider 或类似的东西 基本上 这里的目标是有两种登录方式 普通用户 密码登录方式和使用 Y
  • SonarQube 以 143 退出

    我正在尝试在具有 6GB RAM 的 Centos 6 VM 上设置 SonarQube 该进程始终以 143 退出 经过分析 我发现 JVM 被发送了一个 SIGTERM 信号并因此退出 没有核心转储 dmesg 也没什么帮助 我也尝试摆
  • Windows Phone 枢轴显示在应有的位置之上

    我有以下xaml
  • 如何用最简单的方式快速画一条线

    我对 swift 和 Xcode 相当陌生 我正在尝试制作一个井字游戏 除了如何通过三个 x 或 o 画一条线之外 我已经弄清楚了所有事情 我不知道如何画线 我在网上寻找答案 但无法弄清楚 尝试查看 UIBezierPath 它将对您绘制线
  • 如何使用 fstream fstream::app 标志附加到文件似乎不起作用

    我只是想写入 附加 到日志文件 我在这里查了一下 http www cplusplus com reference iostream fstream open http www cplusplus com reference iostrea
  • 转换 Symfony2 PHP 实体对象以在 Javascript 中使用

    我正在尝试从 PHP 对象打开数据 如下所示 但我希望能够在 JavaScript 中访问此数据以在图形库中使用 有问题的对象 我需要做的是将其转换为 JSON 编码对象以在 Javascript 中使用 我尝试在 Symfony 中使用
  • 嵌套的 Angular2 异步管道如何解决?

    我对嵌套异步管道如何以及何时在 angular2 模板中解析感到有点困惑 而且文档现在的位置不是很好 所以我希望有人可以提供帮助 我有一个非常简单的 Rxjs Observable 从服务返回 通过Observable of myArray
  • 从已删除的远程分支中获取原点?

    当我做git fetch origin并且 origin 有一个已删除的分支 它似乎没有在我的存储库中更新它 当我做git branch r它仍然显示origin DELETED BRANCH 我怎样才能解决这个问题 您需要执行以下操作 g
  • ASP.NET Core Signalr 无法在 AWS 上运行

    我们有两个应用程序 服务器端 Net Core 2 0 和客户端 AngulerJs 它们托管在AWS elistic容器服务上 另外 还有一层云耀斑 此外 我们正在使用指向我们的 docker 容器的 ALB 我们的解决方案应该有一个实时
  • 在 Chrome 中清除焦点上的 HTML5 占位符属性文本

    有什么办法可以清除吗placeholder焦点上的文字Chrome Firefox 会清除焦点上的文本 但 Chrome 不会 这会让用户感到困惑的是 栏中的文本是键入的 还是占位符文本 即使我将文本颜色更改为浅灰色 我不想为此使用不必要的
  • 从对象字面量获取链接值,onchange--Javascript/HTML select

    我知道如何使用 switch case 例程操作此菜单 但我想将 switch case 更改为对象文字 A 部分知道如何获取 onchange 值并打开一个窗口 B 部分知道如何在对象中的名称 值对中查找值 但前提是给它一个硬编码名称来匹
  • cvs更新错误

    我正在使用 WinCVS 当我尝试更新模块时 我不断收到此错误 cvs 更新中止 从服务器读取 错误 1 这里的实际问题是什么以及如何解决这个问题 我遇到了这个问题和类似的问题 通过尝试 CVSROOT pserver 字符串的变体来解决
  • 二元运算符 + 的错误操作数类型

    我需要一个最多 20 位的数字 并且我正在使用 bigint 它在下面的行给了我这个错误 二元运算符 的操作数类型错误 BigInteger t new BigInteger my number getText toString my nu
  • Spring 没有独特的 bean 类型

    我在 Spring 中遇到了一个服务的两个组件的小问题 我有这个组件 Component public class SmartCardWrapper 和这个 Component public class DummySmartCardWrap
  • 使用 Symfony 和 Doctrine 调用 null 500 上的成员函数 has()

    我在设置要从以下服务文件运行的学说时遇到一些问题
  • 如何使用 root 权限在 VS Code 中调试 Go 文件?

    如何强制 Delve in VS Code 使用 root 权限 我正在尝试调试涉及 gopacket pcap 的 go 文件 hndl err pcapgo NewEthernetHandle ifname err couldn t o