golang开发的小工具的小问题总结
星期五, 2017-07-07 | Author: Lee | linux | 2,919 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) } |
文章作者: Lee
本文地址: https://www.pomelolee.com/1733.html
除非注明,Pomelo Lee文章均为原创,转载请以链接形式标明本文地址
No comments yet.
Leave a comment
Search
相关文章
热门文章
最新文章
文章分类
- ajax (10)
- algorithm-learn (3)
- Android (6)
- as (3)
- computer (85)
- Database (30)
- disucz (4)
- enterprise (1)
- erlang (2)
- flash (5)
- golang (3)
- html5 (18)
- ios (4)
- JAVA-and-J2EE (186)
- linux (143)
- mac (10)
- movie-music (11)
- pagemaker (36)
- php (50)
- spring-boot (2)
- Synology群晖 (2)
- Uncategorized (6)
- unity (1)
- webgame (15)
- wordpress (33)
- work-other (2)
- 低代码 (1)
- 体味生活 (40)
- 前端 (21)
- 大数据 (8)
- 游戏开发 (9)
- 爱上海 (19)
- 读书 (4)
- 软件 (3)