golang开发的小工具的小问题总结

星期五, 2017-07-07 | Author: Lee | linux | 204 views

用golang 开发了个自动抓取的小工具,同时受控服务器的任务分发.

小问题总结
1.build后的文件太大(5M)启用这种编译后(3M),更多加壳压缩太麻烦 没有弄了

解决采用:go build -ldflags “-s -w” 这种方式编译。

解释一下参数的意思:

-ldflags: 表示将后面的参数传给连接器(5/6/8l)
-s:去掉符号信息
-w:去掉DWARF调试信息
注意:

-s 去掉符号表(这样panic时,stack trace就没有任何文件名/行号信息了,这等价于普通C/C+=程序被strip的效果)

-w 去掉DWARF调试信息,得到的程序就不能用gdb调试了

2.工具启动后不允许崩溃 异常捕获 使用recover 捕获调用异常

package main
 
import (
    "fmt"
    "time"
)
 
func main() {
    i := 10000
    for j := 0; j < 3; j++ {
        // 使用多协程处理,其中可以预见的是除数为0会抛出异常
        go divide(i, j)
    }
 
    // 为了保证前面线程运行完,这里休眠一下
    for {
        time.Sleep(1 * time.Second)
    }
}
 
func divide(i, j int) {
    // 定义recover方法,在后面程序出现异常的时候就会捕获
    defer func() {
        if r := recover(); r != nil {
            // 这里可以对异常进行一些处理和捕获
            fmt.Println("Recovered:", r)
        }
    }()
 
    fmt.Println(i / j)
}

Tags:

文章作者: Lee

本文地址: https://www.pomelolee.com/1733.html

除非注明,I5A6文章均为原创,转载请以链接形式标明本文地址

No comments yet.

Leave a comment

Search

文章分类

Meta