为了账号安全,请及时绑定邮箱和手机立即绑定

如何在golang dlv中重新加载源文件

如何在golang dlv中重新加载源文件

Go
守着一只汪 2023-03-21 16:01:55
我正在使用 dlv 调试 golang 源代码。有没有修改源代码后重新加载程序的命令?我在网上和 dlv 文档中进行了搜索,但没有找到有关如何执行此操作的任何信息。任何帮助将不胜感激。环境:centos
查看完整描述

2 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

Delve 当前无法重新加载您正在运行的已编译代码,同时保留您的状态(如断点和跟踪)。您可以做的最好的事情可能是在 Delve 中使用“source”命令。比如debug.txt在本地目录下放一个叫的文件,可以添加:


break foo.go:171

on 1 print myVar

..然后回到dlv debug:


$ dlv debug

Type 'help' for list of commands.

(dlv) source debug.txt

Breakpoint 1 set at 0x1b0f5e5 for /path/to/foo.MyFunction() ./foo.go:171

(dlv)

您配置的断点已加载。


这不是一个完美的解决方案,我想念 gdb 的行为,所以我创建了一个 GitHub 问题来开始讨论:https ://github.com/go-delve/delve/issues/1551


查看完整回答
反对 回复 2023-03-21
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

~~猜你正在寻找像这样的实时代码重载~~

~~ https://github.com/codegangsta/gin ~~

  • 1 如果你想在不退出 vim 的情况下进行调试,那么: :new | 0read ! dlv debug #就可以了。

  • 2 如果您希望不断加载 dlv 模式,您可以将 tmux 与拆分窗格一起使用。一个面板打开 vim 和你的文件,另一个面板运行 dlv。当您在 vim 中更改文件时(在窗格中)delve(在伴随窗格中)重新加载此文件以进行调试

  • 3 如果您只想在保存文件时运行调试,请在第一个命令前添加前缀autocmd BufWritePre Filetype go并将其添加到您的virmc.

如果您正在寻找每次进行更改时都会重建可执行文件的命令,我认为您来错地方了,调试并不意味着重建可执行文件。完成调试后,您可以检查您的应用程序并运行命令(go build调用它的某些变体或某些包装器)。构建您的可执行文件。


查看完整回答
反对 回复 2023-03-21
  • 2 回答
  • 0 关注
  • 144 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信