delve应该安装到哪_Golang /Go调试工具delve

安装

这里提供了支持的所有平台(操作系统)上安装Delve的说明。 请注意您必须安装Go 1.5或更高版本。 此外如果使用Go 1.5,您必须设置GO15VENDOREXPERIMENT = 1,然后再尝试安装。

OSX

在OSX上插入

请使用以下步骤在OSX上构建和安装Delve

Via Homebrew

如果你安装了HomeBrew,只需运行:

$ brew install go-delve/delve/delve

手动安装

0) 必备条件

确保您具有正确的编译工具链。

这应该是简单的:

xcode-select --install

1)创建自签名证书

你必须创建自签名证书,并使用它签署二进制文件:

打开应用程序“钥匙串访问”(/ Applications / Utilities / Keychain Access.app)

打开菜单 /Keychain Access/Certificate Assistant/Create a Certificate...

选择一个名称(在示例中为dlv-cert),将“Identity Type(身份类型)”设置为“Self Signed Root(自签名根)”,将“Certificate Type(证书类型)”设置为“Code Signing(代码签名)”,然后选择“Let me override defaults(让我覆盖默认值)”。 单击“Continue(继续)”。 您可能想将预定义的365天期间延长到3650天。

单击“Continue(继续)”多次,直到进入“Specify a Location For The Certificate(指定证书的位置)”页面,然后将“Keychain to System(钥匙串设置为系统)”。

如果您不能将证书存储在“System(系统)”钥匙扣中,请在“login(登录)”钥匙扣中创建,然后将其导出。 然后,您可以将其导入到“System(系统)”钥匙扣。

在钥匙串中选择“系统”,你应该找到你的新证书。 使用证书的上下文菜单(不是公钥或私钥),选择“获取信息”,打开“信任”项,并将“代码签名”设置为“始终信任”。

[至少在Yosemite上:]在钥匙串中选择类别Keys - > dlv-cert - >右键单击 - > GetInfo - >Access Control (访问控制) - >选择“允许所有应用程序访问此项目” - >保存更改。

您必须退出“钥匙串访问”应用程序,才能使用证书并通过终止当前运行的“任务门”进程重新启动“任务门”服务。 或者,您可以重新启动计算机。

2)二进制安装

在写go程序的时候首先创建文件夹$GOPATH/src/github.com/derekparker 并且cd 到c$GOPATH/src/github.com/derekparker目录下

注意:如果您使用Go 1.5必须先设置GO15VENDOREXPERIMENT = 1,然后才能继续安装。

GO15VENDOREXPERIMENT env var只是选择进入Go 1.5 Vendor Experiment。(1.6不需要)

所有make命令都假设一个CERT环境变量,其中包含上面创建的证书的名称。 Makefile还假定GOPATH是单值的,不是冒号分隔的。 makefile只需要帮助促进构建和代码签名的过程。

运行以下命令:CERT = dlv-cert make install,它将安装二进制文件并对其进行编码。

有关更多信息,请参阅此安装视频https://www.youtube.com/watch?v=4ndjybtBg74

说明

在构建期间取消代码签名授权提示

如果在使用自签名证书运行make时提示您授权,请尝试以下操作:

打开应用程序“钥匙串访问”(/ Applications / Utilities / Keychain Access.app)

双击与您的自签名证书(示例中的dlv-cert)对应的私钥

选择“Access Control(访问控制)”选项卡

单击“始终允许这些应用程序访问”下的[+],然后从Finder对话框中选择/ usr / bin / codesign

点击“(Save changes)保存更改”按钮

消除“Developer tools access(开发工具访问)”提示运行delve

如果运行dlv时出现此提示:

"Developer tools access needs to take control of another process for debugging to continue. Type your password to allow this"

尝试运行DevToolsSecurity -enable以消除提示。 有关更多信息,请参阅man DevToolsSecurity。

Linux

请使用以下步骤在Linux上构建和安装Delve

在Linux上有两种安装方式。 首先是标准的go get方法:

go get github.com/derekparker/delve/cmd/dlv

或者,您可以克隆repo并运行:

$ make install

注意:如果您使用Go 1.5必须先设置GO15VENDOREXPERIMENT = 1,然后才能继续安装。 GO15VENDOREXPERIMENT env var只是选择进入Go 1.5 Vendor Experiment。

Windows

请使用标准的go get命令在Windows上构建和安装Delve

go get github.com/derekparker/delve/cmd/dlv

注意:如果您使用Go 1.5必须先设置GO15VENDOREXPERIMENT = 1,然后才能继续安装。 GO15VENDOREXPERIMENT env var只是选择进入Go 1.5 Vendor Experiment。

用法

您可以多种方式调用Delve,具体取决于您的使用需求。 Delve使每个尝试都是用户友好的,确保用户必须做最少的工作可能开始调试他们的程序。

请参阅主要使用文档以进一步探索命令。

命令行界面

命令

命令

描述

args

打印函数参数

break

设置一个断点

breakpoints

打印激活的断点信息

clear

删除断点

clearall

删除所有的断点

condition

设置断点条件

continue

运行到断点或程序终止

disassemble

拆解器

exit

退出debugger

frame

在不同的框架上执行的命令

funcs

打印函数列表

goroutine

显示或更改当前goroutine

goroutines

列出程序的全部goroutines

help

打印出帮助信息

list

显示源代码

locals

打印局部变量

next

跳到下一行

on

在遇到断点时执行一个命令

print

评估表达式

regs

打印CPU寄存器的内容

restart

重启进程

set

更改变量的值

source

执行包含delve命令列表的文件

sources

打印源文件列表

stack

打印堆栈跟踪

step

单步执行程序

step-instruction

单步单个执行cpu指令

thread

切换到指定的线程

threads

打印每一个跟踪线程的信息

trace

设置跟踪点

types

打印类型列表

vars

打印某个包内的(全局)变量

API

API文档

Delve公开了主要可以与Delve编程交互的IDEs和编辑器的一个API接口,以便这些程序使用。 API由终端使用,因此无论新功能如何,都将始终保持最新的锁定状态。

使用

为了在“API模式”中运行Delve,只需使用标准命令之一调用,提供--headless标志,如下所示:

$ dlv debug --headless --api-version=2 --log --listen=127.0.0.1:8181

这将以非交互模式启动调试器,侦听指定的地址,并启用日志记录。 当然最后两个标志(log listen)是可选的。

或者如果您要将多个客户端连接到API,也可以指定--accept-multi客户端标志。

您可以使用connect子命令从Delve本身连接headless调试器:

$ dlv connect 127.0.0.1:8181

这对于远程调试很有用。

API 接口

Delve已经可以允许多个客户端/服务器这种方式的架构。因为所有的“业务逻辑”被抽象出实际的客户端/服务器实现,所有允许容易实现新的API接口。

当前API接口

内部文件

TODO(derek parker)

将要做的

这个目录将包含调试器内部和它如何工作的文档。

编辑器集成

demo.gif

安装

可以使用apm install go-debug或在设置中搜索go-debug。

安装delve

查阅https://github.com/derekparker/delve/tree/master/Documentation/installation

绑定的快捷键

f5 运行当前包 (dlv debug)

ctrl-f5 测试运行当前包(dlv test)

shift-f5 重新启动当前的delve会话(r / restart)

f6 停止delve (exit / quit / q)

f8 继续执行 (c / continue)

f9 切换断点

f10 到下一个断电源(n / next)

f11 进入函数 (s / step)

cmd-k cmd-g (mac) / ctrl-k ctrl-g (others) 切换主面板

链接

关于slack的golang社区:Gopher Slack| go-plus

问题?请直接在go-plus频道给我发送消息

已知bugs

当一个函数定义两个(或多个)同名的变量时,delve无法区分它们:locals将打印这两个变量,print将随机选择一个。 参见问题Issue#106。

Delve目前不支持32位系统。 这通常表现为proc / disasm.go中的编译器错误。 参见问题Issue#20。

当Delve使用go之前的版本1.7.0编译时,不能使用Receiver.Method Name语法在远程包中的函数上设置断点。 参见问题Issue#528。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值