我的编程空间,编程开发者的网络收藏夹
学习永远不晚

GoLang调用链可视化go-callvis使用介绍

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

GoLang调用链可视化go-callvis使用介绍

本文介绍一款工具 go-callvis,它能够将 Go 代码的调用关系可视化出来,并提供了可交互式的 web 服务。

go get -u github.com/ofabry/go-callvis
在windows系统上并没有自动安装,需要进入下载的目录go install
在linux系统上自动安装了

> go-callvis

go-callvis: visualize call graph of a Go program.

Usage:

  go-callvis [flags] package

  Package should be main package, otherwise -tests flag must be used.

Flags:

  -debug
        Enable verbose log.
  -file string
        output filename - omit to use server mode
  -focus string
        Focus specific package using name or import path. (default "main")
  -format string
        output file format [svg | png | jpg | ...] (default "svg")
  -graphviz
        Use Graphviz's dot program to render images.
  -group string
        Grouping functions by packages and/or types [pkg, type] (separated by comma) (default "pkg")
  -http string
        HTTP service address. (default ":7878")
  -ignore string
        Ignore package paths containing given prefixes (separated by comma)
  -include string
        Include package paths with given prefixes (separated by comma)
  -limit string
        Limit package paths to given prefixes (separated by comma)
  -minlen uint
        Minimum edge length (for wider output). (default 2)
  -nodesep float
        Minimum space between two adjacent nodes in the same rank (for taller output). (default 0.35)
  -nointer
        Omit calls to unexported functions.
  -nostd
        Omit calls to/from packages in standard library.
  -skipbrowser
        Skip opening browser.
  -tags build tags
        a list of build tags to consider satisfied during the build. For more information about build tags, see the description of buil
d constraints in the documentation for the go/build package
  -tests
        Include test code.
  -version
        Show version and exit.

依赖

  • Go 1.17+
  • Graphviz (可选,当工具指定了 -graphviz 时需要)

测试代码

package main
import (
	"log"
	"net"
)
func main() {
	// Part 1: create a listener
	l, err := net.Listen("tcp", ":8000")
	if err != nil {
		log.Fatalf("Error listener returned: %s", err)
	}
	defer l.Close()
	for {
		// Part 2: accept new connection
		c, err := l.Accept()
		if err != nil {
			log.Fatalf("Error to accept new connection: %s", err)
		}
		// Part 3: create a goroutine that reads and write back data
		go func() {
			log.Printf("TCP session open")
			defer c.Close()
			for {
				d := make([]byte, 1024)
				// Read from TCP buffer
				_, err := c.Read(d)
				if err != nil {
					log.Printf("Error reading TCP session: %s", err)
					break
				}
				log.Printf("reading data from client: %s\n", string(d))
				// write back data to TCP client
				_, err = c.Write(d)
				if err != nil {
					log.Printf("Error writing TCP session: %s", err)
					break
				}
			}
		}()
	}
}

在linux上可以正常运行,windows上会报错

> go-callvis main67.go
2022/09/21 15:28:50 http serving at http://localhost:7878

go-callvis 默认将代码调用关系存储成 svg 格式的图形。

在浏览器中访问 http://localhost:7878

点击上面的 log 模块,将会进入 log 模块的代码调用交互图中

它主要是作用是清晰的列出了包与包之间的依赖以及调用关系,用来理解项目的大致架构。

到此这篇关于GoLang调用链可视化go-callvis使用介绍的文章就介绍到这了,更多相关Go callvis内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

GoLang调用链可视化go-callvis使用介绍

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

GoLang调用链可视化go-callvis使用介绍

与链路追踪(Tracing)不同,Tracing关注复杂的分布式环境中各个服务节点间的调用关系,主要用于服务治理。而我们本次探索的代码调用链路则是代码方法级别的调用关系,主要用于代码设计
2023-02-02

如何在TensorFlow中使用TensorBoard进行可视化和调试

TensorBoard是一个用于可视化和调试TensorFlow模型的工具,可以帮助用户更好地了解模型的结构、性能和训练过程。以下是在TensorFlow中如何使用TensorBoard进行可视化和调试的步骤:在TensorFlow代码中添
如何在TensorFlow中使用TensorBoard进行可视化和调试
2024-03-01

如何在golang中使用WebSocket实现实时数据可视化

如何在golang中使用WebSocket实现实时数据可视化引言:现如今,实时数据可视化在众多领域都发挥着重要作用,而WebSocket是一种用于在Web浏览器和服务器之间进行实时双向通信的协议。本文将介绍如何使用golang中的WebSo
如何在golang中使用WebSocket实现实时数据可视化
2023-12-17

使用Go语言开发实现实时数据可视化的应用

随着大数据时代的到来,数据的产生和处理变得越来越重要。随之而来的是人们对于实时数据的需求也越来越迫切。因此,实时数据可视化成为了一个非常热门的话题。在实时数据可视化的应用中,使用Go语言进行开发非常合适。Go语言是一种并发编程语言,具有高性
使用Go语言开发实现实时数据可视化的应用
2023-11-20

优化程序性能和可维护性:使用Golang实现链表结构

通过Golang实现链表,提升程序的性能和可维护性链表(Linked List)是一种常用的数据结构,它可以动态地存储数据,并且具有良好的插入和删除操作性能。在编程中,经常会遇到需要使用链表的场景,例如实现队列、栈、缓存等。本文将介绍如何
优化程序性能和可维护性:使用Golang实现链表结构
2024-01-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录