zhangmeng
2019-12-31 0613a9e6306026713501d90b9d02fb7ffbebf054
main.go
@@ -4,12 +4,16 @@
   "analysis/logo"
   "analysis/proc"
   "analysis/util"
   "fmt"
   "runtime/debug"
   "strconv"
   "time"
   "context"
   "flag"
   "os"
   "os/exec"
   "os/signal"
   "golang.org/x/sys/unix"
@@ -147,6 +151,8 @@
   if role == single {
      ret = proc.SingleRole(ctx, runType, id, gpu, shm)
   } else if role == master {
      defer dump(util.LogFile + "_dump_" + time.Now().Format("20060102150405"))
      setParamters()
      ret = proc.MasterRole(ctx)
   } else if role == slave {
@@ -164,3 +170,26 @@
   gosdk.Free()
   logo.Close()
}
func dump(dumpFile string) {
   dumpErr := recover()
   if dumpErr == nil {
      return
   }
   f, err := os.Create(dumpFile)
   if err != nil {
      return
   }
   f.WriteString(fmt.Sprintf("panic:\r\n%v", dumpErr))
   f.WriteString("\r\n\nstack:\r\n")
   f.WriteString(string(debug.Stack()))
   f.Close()
   //////////////////////////////////////////////
   // restart master
   cmd := exec.Command(os.Args[0], os.Args[1:]...)
   cmd.Stdout = os.Stdout
   cmd.Stderr = os.Stderr
   cmd.Start()
}