首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Tensorbytes

    go debug工具-dlv

    golang debug 工具 dlv 可以非常方便 go 程序做单步调试。 /delve/cmd/dlv 使用 三种用法, 直接在代码目录下运行main文件: $ dlv debug 直接 attach 已经运行的目标程序 $ dlv attach <PID> 运行二进制程序: /main.go:10 # 让程序继续执行到下个断点位置 (dlv) continue > main.main() . /main.go:16 # 断点执行到下一行代码 (dlv) next # 打印arr变量 (dlv) print max 101 # 修改max变量,这里修改变量只能修改数字或指针,因为这里本质是修改程序内存空间 (dlv) set max = 333 (dlv) print max 333 # 让程序继续执行到下个断点位置 (dlv) continue > main.main() .

    1.3K31编辑于 2022-06-28
  • 来自专栏HHTjim'S 部落格

    golang远程调试 vscode+dlv

    远程服务器环境安装 dlv $ go install github.com/go-delve/delve/cmd/dlv@latest 查看已安装dlv版本 $ dlv version Delve 监听已启动进程 $ dlv attach 28122 --listen=:8669 --headless --api-version=2 --log 28122 为已启动进程id 8669 为dlv 通过dlv直接启动指定bin文件 $ dlv exec --listen=:8669 --headless --api-version=2 --log . /main-hhtjim 8669 为dlv开启的监听端口 main-hhtjim 为打包的bin文件 方法c. dlv直接启动并且监听 $ dlv debug --listen=:8669 --headless 监听 调试环境不使用之后切记销毁,dlv目前无身份校验!

    2.2K10编辑于 2024-01-01
  • 来自专栏技术进阶

    通过dlv简单分析Go coredump文件

    (dlv) c attach dlv attach [pid] debug dlv debug main.go 调试core文件 dlv core [可执行程序] [core文件] 退出调试器 (dlv ) exit 代码与动态库加载 查看加载的动态库 (dlv) libraries 列出所有的函数符号 (dlv) funcs 打印所有的类型信息 (dlv) types 列出所有源码文件 (dlv) sources 查看源码 (dlv) frame 1 list 69 (dlv) list testvariables.go:10000 (dlv) list main.main:30 (dlv) list 40 程序运行 (dlv) next [n] 可以多行 next 可缩写为 n 退出函数 (dlv) stepout stepout可缩写为 so 断点 查看断点 (dlv) bp 函数断点 包名.方法名 (dlv) (dlv) down 查看当前函数参数 (dlv) args 查看当前函数局部参数 (dlv) locals 变量和类型 打印变量 p arg 有时,我们需要打印的字符串过长,dlv 输出显示more

    2.9K10编辑于 2022-08-07
  • 来自专栏sunsky

    Golang程序调试工具介绍(gdb vs dlv)

    dlv调试程序 尝试了”老牌”调试器gdb,我们再来试试新进的Golang原生调试器delve(dlv)。 使用dlv前,需在本地通过go get github.com/derekparker/delve/cmd/dlv进行安装。dlv的详细介绍可参见github上的delve介绍。 ) print var1 1 (dlv) print var2 "golang dbg test" (dlv) print var3 []int len: 3, cap: 3, [1,2,3] (dlv dlv可以! dlv的GUI前端(gdlv),对于那些习惯了使用GUI进行调试的人来说,结合gdlv和dlv,调试会更加方便。

    5.4K20发布于 2020-08-20
  • 来自专栏码上读书

    Go调试利器,手把手入门dlv (上)

    说到调试器,首先让人想到大名鼎鼎的GDB,在mac上对应的有lldb,dlv是针对Go语言单独开发的调试利器,而且dlv也是用go语言开发的。在windows平台也可以同样运行。 今天我们简单介绍一下dlv如何调试go程序的。 (dlv) n > main.main() . /delve.go:11 (dlv) condition 2 i==3 (dlv) c > main.main() . 好了,今天的dlv 就介绍到这里了,下一篇我们继续介绍用dlv 调试汇编程序。

    2.8K10编辑于 2022-12-02
  • 来自专栏Golang语言开发栈

    Go 语言源码级调试器 Delve

    我建议读者朋友们将 dlv可执行文件,配置到 PATH 环境变量。 我们可以使用 dlv 的任意可用命令启动一个调式会话,比较常用的命令是 dlv debug, dlv exec 和 dlv test。限于篇幅,本文我们介绍 dlv debug 的使用方法。 (dlv) 阅读上面这段代码,我们使用 dlv debug 启动一个调试会话,在没有任何参数的情况下,Delve 编译并开始调试当前目录中的 main 包。 (dlv) 调试会话启动后,我们可以使用调试命令进行调试程序。 list 命令: dlv debug Type 'help' for list of commands. ) print a 1 (dlv) print b 2 (dlv) step > main.sum() .

    2.5K30编辑于 2022-07-01
  • 来自专栏人人都是架构师

    Go每日一库之174:delve (Go 调试工具)

    常用命令 dlv attach - 调试进程 dlv core - 调试 core dlv debug - 编译并调试当前目录的 main 包,也可以通过参数指定其他包 dlv exec - 调试二进制文件 -o main main.go $ dlv exec . (dlv) ... 0 常用调试命令 下列命令是启动 dlv 调试后可用的命令 (也就是当前命令行变为 (dlv) 之后可用)。 (dlv) # 增加断点 (dlv) b main.main Breakpoint 1 set at 0x45f0c6 for main.main() .

    1.5K30编辑于 2023-09-30
  • 来自专栏oracle3技术大杂烩

    2019-02-26 在ubuntu上调试go-ethereum

    这个在windows上调试挺方便的,但是放到ubuntu上死活debug出错,goland到底存在啥问题呢,实在找不到原因,就想到一个折中的方法来解决:使用goland启动go-ethereum,然后使用dlv 调试,方法如下: 1、用su修改文件,然后重启 使用dlv attach的时候回出现类似下面的错误 Could not attach to process. dlv attach 2504 Successfully moved config from: /home/elikong/.dlv to: /home/elikong/.config/dlv/config.yml (dlv) funcs SendTransaction github.com/ethereum/go-ethereum/eth. (*PublicTransactionPoolAPI).SendTransaction (dlv) b ethapi.

    74530编辑于 2022-05-13
  • 来自专栏Go工具箱

    使用 Delve 工具调试 Golang 程序

    $ 如果在终端输入 dlv 命令提示找不到该命令,则将 GOPATH/bin 下的 dlv 命令软链接到/usr/local/bin 目录。 $ dlv debug main.go Type 'help' for list of commands. (dlv) Delve 客户端 通过执行 dlv debug 即开启了一个调试的会话。 ) 通过文件名 + 行号查看源代码 (dlv) list . /main.go:10 (dlv) list . (dlv) stepout > main.main() .

    2.1K20编辑于 2023-01-31
  • 来自专栏Kevinello的技术小站

    \[vscode issue\] Golang Debug 无法命中断点

    无法命中断点 在launch.json中添加参数 这样Debug程序会输出日志并停在程序入口,观察日志发现有setBreakPoints的输入,也就是说编辑器(VSCode)是正确识别到了断点并传递给dlv-dapdlv 报错:找不到文件在dlv控制台执行 dlv sources,获取dlv装载的文件,发现有目标文件,但目录并非/home而是/data00/home观察VSCode的控制台打印的cwd,发现vscode识别的路径为 /homestat /home,发现其为软链接,目标目录为/data00/home定位原因,dlv将软链接文件装载为指向的物理文件,vscode传入的是软链接路径,二者路径不一致,dlv装载的内容不包含软链接路径解决方法在

    1.1K40编辑于 2023-10-18
  • 来自专栏全栈程序员必看

    goland调试go代码_debug运行

    ,最好最快捷的问题定位方式一定是使用 Debug 打断点调试,这时就引出了本文的主角dlv。 安装 dlv 参考官方的安装方法,把 dlv 命令安装在 gopath 的 bin 目录下(需要你把go的bin目录添加到$PATH) GO 1 2 3 Jetbrains全家桶1年46,售后保障稳定 $ 进入调试模式有以下几种办法(重要) dlv attach pid:对正在运行的进程直接进行调试(pid 为进程id); dlv debug:编译源文件并开始调试,这里应和 main 函数位于同一目录 BASH 1 go build -o hello -gcflags "all=-N -l" 使用dlv启动你的程序 BASH 1 dlv --listen=:2345 --headless=true && \ go build -o /usr/local/bin/dlv github.com/go-delve/delve/cmd/dlv COPY hello /usr/local/hello

    4.6K30编辑于 2022-11-16
  • 来自专栏Golang开发

    golang-101-hacks(14)——切片与数组的关联

    ) p ns [][]int len: 1, cap: 1, [ [0,0,1], ] (dlv) p ns[0] []int len: 3, cap: 4, [0,0,1] (dlv) p &ns[0][0] (*int)(0xc82000e240) (dlv) p s []int len: 2, cap: 2, [0,0] (dlv) p &s[0] (*int)(0xc82000a2a0 ) (dlv) p &ns[1][0] (*int)(0xc82000e280) (dlv) p &s[0] (*int)(0xc82000a2a0) 我们可以看到s1 n[0] n[1]分别指向有3个不同的数组 ) p ns [][]int len: 1, cap: 1, [ [0,0,0,1], ] (dlv) p &ns[0][0] (*int)(0xc82000e220) (dlv) p ) (dlv) p &ns[1][0] (*int)(0xc82000e220) (dlv) p s []int len: 3, cap: 4, [0,0,0] (dlv) p &s[0] (*int)

    70230发布于 2019-06-14
  • 来自专栏MySQL参数系列

    go语言调试工具--Delve

    % dlv debug Type 'help' for list of commands. (dlv) (dlv) help The following commands are available: Running the program: call -------------- 再次输入next命令单步执行后就可以查看到nums切片初始化之后的结果了: (dlv) next > main.main() . /main.go:10 (dlv) condition 2 i==3 (dlv) 然后通过continue执行到刚设置的条件断点,并且输出局部变量: (dlv) continue > main.main (dlv) quit corollad@MacBook-Pro go_dlv % 用到的命令总结: 1、dlv debug 2、break main.main 3、breakpoints 4、vars

    55720编辑于 2022-08-16
  • 来自专栏编程技术沉思录

    JetBrains GoLand 以debug运行Go程序时出现could not launch process: decoding dwarf section info at offset 0x0:

    既然如此,若是dlv(Delve 简写)版本过低的原因,那好办,不妨先升级一下div。 一、下载div新版本 执行go get -u github.com/derekparker/delve/cmd/dlv ? dlv.exe文件,即证明新版本Delve 下载完成。 进入到Edit Custom Properties后,设置新div的配置如下: dlv.path=C:/Users/Administrator/go/bin/dlv 其中,C:/Users/Administrator /go是你的系统环境变量里的%GOPATH%对应路径,我这里用到了绝对路径,不知道直接用dlv.path=%GOPATH%/bin/dlv可否也行,暂时没有进一步尝试,感兴趣的小伙伴可自行验证。

    2.8K40发布于 2021-07-19
  • 来自专栏【腾讯云开发者】

    别再用GDB了,一文掌握Go最好用的调试器Delve

    目录 1 Delve 1.1 dlv 安装 1.2 内联和优化的关闭 1.3 dlv 中位置的定义 1.4 dlv 支持的表达式 1.5 使用 dlv 开启 #### dlv debug、dlv exec 默认 dlv debug 会查找当前目录中的 main.main,编译、并开启 debug。 如下: dlv exec <path/to/binary> [flags] #### dlv attach dlv 提供了进程的 attach 支持,使用 dlv 可以对运行中的进程进行调试。 办公网无法连接到123环境 #### dlv core dlv 也对 coredump 调试提供了支持,使用 dlv core 可以方便的对线上 coredump 进行调试、分析,发现相关问题。 02、dlv 中相关命令 2.1 dlv 的配置 dlv 配置默认包含2种方式,基于命令、基于配置文件。需要注意,基于命令的修改是 session 级的,重启 debug 相关配置会丢失。

    4.8K11编辑于 2024-01-11
  • 来自专栏liliane随笔

    Go远程调试方案

    $ git clone https://github.com/go-delve/delve $ cd delve $ go install github.com/go-delve/delve/cmd/dlv $ dlv version # 查看是否安装成功 2. dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient xxx 关于dlv命令: 详细可参考:Delve调试器。 TODO 解决远程调试单元测试 dlv 支持 test,参见:https://github.com/go-delve/delve/blob/master/Documentation/usage/dlv_test.md : dlv test [package] -- -test.run TestSomething -test.v -other-argument 但目前看,似乎并没法像上面开启对单测的远程调试,需要进一步实践

    1K10编辑于 2024-09-04
  • 来自专栏大卫李的技术分享

    Go语言开发调试中阶

    # 特别注意这个参数“--security-opt seccomp:unconfined” # 它的作用是禁用Linux内核层面的Secure computing mode # 目的是为了能够正确使用dlv 验证容器内调试工具的有效性 > dlv Delve is a source level debugger for Go programs. ...... Pass flags to the program you are debugging using `--`, for example: `dlv exec . # 输入以下命令启动调试 > dlv debug . . # 对main包中的main方法打上断点(breakpoint) > (dlv) b main.main Breakpoint 1 set at 0x7bce78 for main.main() .

    1.4K30发布于 2020-05-11
  • 来自专栏码农桃花源

    曹大带我学 Go(3)—— 如何用汇编打同事的脸

    dlv 调试 那有同学问了,有没有其他可以调试 Go、以及和 Go 程序互动的方法呢?其实是有的!这就是我们要介绍的 dlv 调试工具,目前它对调试 Go 程序的支持是最好的。 进入调试状态: dlv exec . hello.go 赋值的地方在第 5 行,加断点: (dlv) b a.go:5 Breakpoint 1 set at 0x45e55d for main.main() . 另外,用 dlv 也能干第二部分“找到 runtime 源码”活。 总结 今天系统地讲了几招通过命令和工具查看用户代码对应的 runtime 源码或者汇编代码的方法,非常实用。 最后再汇总一下: go tool compile go tool objdump dlv 使用这些命令和工具,可以让你在看 Go 源码的过程中事半功倍。

    1K10发布于 2021-06-17
  • 来自专栏子曰五溪

    Go 如何调试你的应用程序

    于是,继续找了找,才发现一个比较好的方案,那就是dlv(https://github.com/derekparker/delve)。 Dlv,也称为Delve是Go语言的源码调试工具,由derekparker开发,开源于Github。 在Mac上配置Go语言开发环境的时候,经常碰到的问题就是Dlv调用总是不成功,无法启动应用,无法调试等等,大部分的问题都与Mac的安全机制有关。 当然如果为了方便,你可以通过Homebrew安装Homebrew编译好的Dlv。 由于我深度使用vscode,所以我的调试器主要是为了配置vscode,配置起来不复杂只是比较麻烦。 然后在你的项目中,安装dlv go get -u github.com/derekparker/delve/cmd/dlv 你可以输入go env,先查询一下go的环境配置,主要是GOPATH这一项,如果你没有配置

    3.1K30发布于 2019-06-24
  • 来自专栏charlieroro

    使用delve调试golang

    使用clear清除断点 使用goroutines查看所有协程 使用stack(bt)查看goroutine的栈信息 使用attach连接到正在运行的进程 goland远程调试 前置要求 dlv调试要求可执行文件不能删掉调试信息 可以在后面加上函数的名字或部分名字可以检索出支持的函数,如: (dlv) funcs VmSvc devops/alert-sd-engine/pkg. (*Monitor).getVmSvcScrape 当然也可以使用如下方式将断点打到文件的某一行 (dlv) b engine.go:196 使用breakpoints查看当前活动的断点。 (dlv) breakpoints Breakpoint runtime-fatal-throw (enabled) at 0x4345e0 for runtime.throw() /usr/local runtime.gopark (0x4370f6) [GC scavenge wait] 使用goroutine 可以切换goroutine 使用stack(bt)查看goroutine的栈信息 (dlv

    64710编辑于 2022-05-09
领券