cgo

Process finished with exit code 134 (interrupted by signal 6:SIGABRT)

出现 exit code 134 (interrupted by signal 6: SIGABRT) 通常表示程序由于调用了 abort() 而中止,或是内存分配/释放问题。这个错误通常发生在以下场景:

  • 内存非法访问。
  • 重复释放内存或释放未分配的内存。

可以将 go run 命令与 -gcflags 选项结合,启用更多调试信息:

1
go run -gcflags="-m" main.go
1
2
3
4
5
go build -gcflags="-m" -o deploy_sdk main.go

lldb ./deploy_sdk


启动 lldb 后,输入 run 开始执行脚本:run

当程序崩溃时,你可以使用 backtrace 来查看堆栈信息:bt

强制检查 CGo 内存使用是否存在问题

1
2
3
4
GODEBUG=cgocheck=2 go run main.go


GOEXPERIMENT=cgocheck2 go build -o deploy_sdk