重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
可以去DELVE官网进行下载。
十余年的榕城网站建设经验,针对设计、前端、开发、售后、文案、推广等六对一服务,响应快,48小时及时工作处理。全网营销推广的优势是能够根据用户设备显示端的尺寸不同,自动调整榕城建站的显示方式,使网站能够适用不同显示终端,在浏览器中调整网站的宽度,无论在任何一种浏览器上浏览网站,都能展现优雅布局与设计,从而大程度地提升浏览体验。创新互联建站从事“榕城网站设计”,“榕城网站推广”以来,每个客户项目都认真落实执行。
关于delve工具的介绍,这里简单给大家介绍一下。
delve在go项目及应用的开发中可以用来追踪程序中的异常代码,也可以通过打日志的方式追查问题,但是更重要也是非常厉害的一点,就是delve可以直接分析程序执行的情况。这一点在后期或线上的问题排查中无疑是提供了一个非常大的便捷。
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。
Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
Go的语法接近C语言,但对于变量的声明有所不同。Go支持垃圾回收功能。Go的并行模型是以东尼·霍尔的通信顺序进程(CSP)为基础。
采取类似模型的其他语言包括Occam和Limbo,但它也具有Pi运算的特征,比如通道传输。在1.8版本中开放插件(Plugin)的支持,这意味着现在能从Go中动态加载部分函数。
Delve常用命令
命令功能:
dlv attach后面跟 pid,用来Debug编译好的Golang程序。
dlv core用于 coredump。
dlv debug后面跟要调试的 go 文件,进入 Debug。
dlv testDebug test 函数。
1.下载go的windows下的安装包:
也可以下载源代码,用MinGW编译。先配置好MinGW的环境,再运行all.bat即可。
MingW:
2.下载gocode,用于go的补全提示:
gocode 的github地址:
要安装git,在windows下,通常用msysgit。
再在cmd下安装:
go get -u github.com/nsf/gocode
也可以下载代码,直接用go build来编译,会生成gocode.exe。
3.在eclipse中安装插件:
4.配置插件:
(1).配置go的编译器
(2).配置gocode(可选),这里我用的是eclipse插件自带的gocode。
(3).配置gdb,做调试用(可选)
如果安装了MingW,可以在安装目录下找到gdb。
5.测试是否成功
新建一个go工程,再建立一个hello.go。如下图:
gdb调试如下(要在console中用输入命令来调试):
6.其它
2012年3月31日:
目前这个eclipse插件,只能把代码放在cmd包中才能运行。
貌似现在流行的是Sublime Text2 + gocode。Sublime Text也的确比较好用。
======================
Eclipse平台下配置Go语言开发环境(Win7)
《Go语言编程》中写到:“从功能和易用性等方面考虑, Eclipse+GoEclipse、LiteIDE这两个环境在所有IDE里面是表现最好的”,所以笔者打算采用Eclipse+GoEclipse开发环境。
Eclipse平台下配置Go语言开发环境步骤:
1、安装JDK和Eclipse
建议JDK1.6及以上版本。Eclipse3.6及以上版本。
2、安装GoEclipse插件
在Eclipse中点击菜单“Help”-》“Install New Software”打开如下对话框,添加go插件的安装地址:,
按提示一步一步操作即可,下载时可能会遇到网络问题,可使用goagent或其他代理。
3、安装并配置Go的编译器
下载地址:
下载时请注意版本,应选择windows-386的版本。
安装完后重启Eclipse,并通过菜单项“Window”-》“Preferences”-》“Go”打开Go语言的配置选项框。如下图:
选择Go的安装路径即可,如笔者的安装路径是F:\Work\Go
4、配置调试器(可选)
需要先安装MinGW,下载地址:
安装完之后,通过菜单项“Window”-》“Preferences”-》“Go”-》“Debugger”打开调试器的配置选项框。
将GDB路径配置为:MinGW安装目录下的gdb.exe文件即可。
5、配置代码自动补全(可选)
需要配置gocode,可使用goEclipse插件自带的版本,也可以自己下载:
笔者使用的是goEclipse插件自带的版本,配置方式如下:
通过菜单项“Window”-》“Preferences”-》“Go”-》“Gocode”打开配置选项框。
将Gocode的路径配置为:goEclipse的安装路径下的gocode.exe文件,如
F:\Work\eclipse\plugins\com.googlecode.goclipse.gocode_0.7.6.v450\tools\windows_386\gocode.exe
6、配置支持Import远程包(可选)
为了支持Import远程包,最好装个gowin-env。下载地址:。 如果下的是压缩包,请把它解压到C盘。例如,C:\gowin-env。里面有个Console.bat是以后使用go get的环境。举例:有个文件a.go,里面import (
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
为了编译该a.go文件,需要启动Console.bat,然后在该命令行窗口,进入c:\go\src目录下,执行go getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go 会自动下载该远程包并编译和安装这些包。
7、go install: no install location for directory *** outside GOPATH错误的处理
由于每一个Go程序都必须包含一个main包以及一个main()函数,因此如果没有main包就会导致上述错误。
What Doesn't Kill Me Makes Me Stronger
英文原文链接【Go, the unwritten parts】 发表于2017/05/22 作者JBD是Go语言开发小组成员
检查程序的执行路径和当前状态是非常有用的调试手段。核心文件(core file)包含了一个运行进程的内存转储和状态。它主要是用来作为事后调试程序用的。它也可以被用来查看一个运行中的程序的状态。这两个使用场景使调试文件转储成为一个非常好的诊断手段。我们可以用这个方法来做事后诊断和分析线上的服务(production services)。
在这篇文章中,我们将用一个简单的hello world网站服务作为例子。在现实中,我们的程序很容易就会变得很复杂。分析核心转储给我们提供了一个机会去重构程序的状态并且查看只有在某些条件/环境下才能重现的案例。
作者注 : 这个调试流程只在Linux上可行。我不是很确定它是否在其它Unixs系统上工作。macOS对此还不支持。Windows现在也不支持。
在我们开始前,需要确保核心转储的ulimit设置在合适的范围。它的缺省值是0,意味着最大的核心文件大小是0。我通常在我的开发机器上将它设置成unlimited。使用以下命令:
接下来,你需要在你的机器上安装 delve 。
下面我们使用的 main.go 文件。它注册了一个简单的请求处理函数(handler)然后启动了HTTP服务。
让我们编译并生产二进制文件。
现在让我们假设,这个服务器出了些问题,但是我们并不是很确定问题的根源。你可能已经在程序里加了很多辅助信息,但还是无法从这些调试信息中找出线索。通常在这种情况下,当前进程的快照会非常有用。我们可以用这个快照深入查看程序的当前状态。
有几个方式来获取核心文件。你可能已经熟悉了奔溃转储(crash dumps)。它们是在一个程序奔溃的时候写入磁盘的核心转储。Go语言在缺省设置下不会生产奔溃转储。但是当你把 GOTRACEBACK 环境变量设置成“crash”,你就可以用 Ctrl+backslash 才触发奔溃转储。如下图所示:
上面的操作会使程序终止,将堆栈跟踪(stack trace)打印出来,并把核心转储文件写入磁盘。
另外个方法可以从一个运行的程序获得核心转储而不需要终止相应的进程。 gcore 可以生产核心文件而无需使运行中的程序退出。
根据上面的操作,我们获得了转储而没有终止对应的进程。下一步就是把核心文件加载进delve并开始分析。
差不多就这些。delve的常用操作都可以使用。你可以backtrace,list,查看变量等等。有些功能不可用因为我们使用的核心转储是一个快照而不是正在运行的进程。但是程序执行路径和状态全部可以访问。