首页 >后端开发 >Golang > 正文

golang怎么debug

原创2020-02-15 10:24:120564
今天就为大家分享一篇关于golang怎么debug的文章,具有很好的参考价值,需要的朋友一起来看看吧。

golang怎么debug

可以使用GoLang调试工具Delve

1、先获取

go get -u github.com/go-delve/delve/cmd/dlv

2、编写测试代码

func main(){
 http.HandleFunc("/test",func(writer http.ResponseWriter,req *http.Request){
 //TODO
 })
 log.Fatal(http.ListenAndServe("127.0.0.1:8080",nil))
}

3、debug 启动

dlv debug test.go

4、打断点

1)对方法打断点:

b main.函数名

2)运行到断点处:

c

3)对某一行打断点:

需要得到文件的位置再打断点:

b /Users/joker/go/src/…/test.go:14 对14行打断点

至于如何进行与ide上的操作一致的呢: 通过n,s

n:相当于Java-Eclipse的F6

s:相当于Java-Eclipse的F5

如何查看变量呢:p

p testName 则会输出testName的值

args:则会输出所有方法参数信息

locals:则会输出所有的本地变量

用go玩Debug, Info, Error级别的log

直接上代码:

package mylog
import (
    "log"
    "os"
)
var (
    Debug *log.Logger
    Info *log.Logger
    Error *log.Logger
)
func init() {
    log.Println("init ...")
    Debug = log.New(os.Stdout, "[DEBUG] ", log.Ldate|log.Ltime|log.Lshortfile)
    Info = log.New(os.Stdout, "[INFO] ", log.Ldate|log.Ltime|log.Lshortfile)
    Error = log.New(os.Stderr, "[ERROR] ", log.Ldate|log.Ltime|log.Lshortfile)
}
package main
import "mylog"
func main(){
  mylog.Debug.Println("good");
  mylog.Info.Println("good");
  mylog.Error.Println("good");
}

就这样。

更多golang知识请关注PHP中文网golang教程栏目。

以上就是golang怎么debug的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码
  • 相关标签:golang debug
  • 本文原创发布php中文网,转载请注明出处,感谢您的尊重!
  • 相关文章

    相关视频


    网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
  • 2019-12-27

    592

    golang使用Devle工具debug。Devle是一个非常棒的golang调试工具,支持多种调试方式,直接运行调试,或者attach到一个正在运行中的golang程序,进行调试。
    golang开发时debug的方法:首先使用go get命令获取delve工具;然后编写测试代码;接着使用dlv debug test.go命令开始调试go程序;最后可以使用b、c、n、s等命令来控制调试
    golang map不排序是因为golang map内部存储机制是以key为hash的结构来实现,所以顺序是混乱的,那解决不排序的方法就是把key转移至slice,将slice进行排序即可。
    php培训太多办?该选?一、机构没有公开PHP教学视频的别去;二、做了大量竞价广告的机构别去;三、夸大宣传的别去。
    在HTML里我们常常会插入图片,那插入图片需要实现?让HTML显示图片有什需要什主意的方面吗?今天我们就来说一下样在HTML插入图片
    区别:Golang由于可以直接编译成二进制文件, 同时支持多线程, 性能上比nodejs要快那一点点。
    Golang可以说两者都不算,因为Golang并没有明显的倾向,而是更倾向于让编程者去考虑该去用它,也许它的特色就是灵活,编程者可以用它实现面向对象,但它本身并不支持面向对象的语义。
    本文介绍php获取所有的sessionid的,希望帮助到大家。
    php递归函数用才有效?php递归函数典型例子

    2019-12-28

    1145

    我们可以使用Devle调试golang程序。使用go get命令即可安装Devle,然后使用“dlv debug ./xxx.go”命令即可调试golang程序。
    golang中的defer关键字在函数返回、函数结束的时候就会生效,golang返回时,先把返回值压栈,然后执行defer函数,如果defer函数中有修改栈中的返回值,那返回值会被修改,之后进行跳转返回
    golang火的原因:1、Concurrency的原生支持;2、Go的依赖管理;3、Go默认使用静态链接的方式编译,所以部署方便;4、Go官方支持的工具链很齐全很好用;5、Go有Google支持,其开源社区健康活跃
    ps字体加粗?下面教大家几种方法,把字体变粗
    ,但是有些同学对这个概念似懂非懂,不知道实现,用,用在哪,甚至有些人认为yield就是协程!本问将为大家详细介绍这一概念。
    Phpcms本地搬家:首先修改“/cache/configs/database.php”中数据库连接文件;然后修改“/cache/configs/system.php”将“localhost”批量替换为用户的网址
    java多线程面试题:1、防止死锁;2、ThreadLocal是什?有哪些使用场景?
    sublime用?修改 sublime text 快捷键以及主题?下面就给大家介绍其修改方法,希望对需要的朋友有所帮助!设置快捷键。
    golang中继承也是通过组合来实现的,具体区别:如果一个struct嵌套了另一个有名结构体,那这个模式就叫组合;如果一个struct嵌套了另一个匿名结构体(只有类型没有名字),那这个结构可以直接访问匿名结构体的方法
    java常见面试题:什是反射?什是 java 序列化?什情况下需要序列化?动态代理是什?有哪些应用?实现动态代理?
    sublime用​?Sublime Text3配置SublimeREPL快捷键?下面就给大家介绍其修改方法,希望对需要的朋友有所帮助!

    专题推荐

    推荐视频教程
  • Go编程基础视频教程Go编程基础视频教程
  • MongoDB参考手册MongoDB参考手册
  • Go参考手册Go参考手册
  • 黑马云课堂mongodb实操视频教程黑马云课堂mongodb实操视频教程
  • 视频教程分类