调试源代码

一、统计代码命令
cloc 命令
```
cloc src
// 安装
  npm install -g cloc                    # https://www.npmjs.com/package/cloc
  sudo apt-get install cloc              # Debian, Ubuntu
  sudo yum install cloc                  # Red Hat, Fedora
  sudo pacman -S cloc                    # Arch
  sudo pkg install cloc                  # FreeBSD
  sudo port install cloc                 # Mac OS X with MacPorts
```
定制方法
```
1. 导出默认支持语言类型相关配置到一个文件中,命令:
cloc.pl --write-lang-def=langs.txt
2. 参考其他语言的格式,修改langs.txt,添加所要统计语言源码文件的后缀名(这里参考了C语言):
re2c
    filter remove_matches ^\s*//
    filter call_regexp_common C
    filter remove_inline //.*$
    extension re
3. 使用新定义的语言文件langs.txt运行cloc:
cloc.pl --read-lang-def=langs.txt [源文件|目录]0
```

二、fmt.Println的实现
源码
```
func Println(a ...interface{}) (n int, err error) {
    println("draven")
    return Fprintln(os.Stdout, a...)
}
/*****结果*****
draven
Hello World
*/
```
println是Go语言运行时提供的内置方法
>cd src
>./make.bash
>如果遇到 make.bash must be run from $GOROOT/src, 则需要修改 GOROOT 指向项目源码目录即可, 再进入到src目录执行 make.bash. 编译成功后则在src目录下生成bin目录


三、中间代码
Go 语言的应用程序在运行之前需要先编译成二进制,在编译的过程中会经过中间代码生成阶段,Go 语言编译器的中间代码具有`静态单赋值`(Static Single Assignment、SSA)的特性
使用下面的命令将 Go 语言的源代码编译成汇编语言,然后通过汇编语言分析程序具体的执行过程:
```
go build -gcflags -S main.go
// 生成汇编语言,只为包 fmt 打印反汇编
// -gcflags    此标记用于指定需要传递给go tool compile命令的标记的列表
// -S 在当前的目录终端打印
```
>静态单赋值? (另起文章)
>go build 参数?(另起文章)
```
$ GOSSAFUNC=main go build main.go
//生成ass.html网页版分析
```

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值