【问题标题】:Go GOTRACEBACK=crash with no core fileGo GOTRACEBACK=crash 没有核心文件
【发布时间】:2017-06-08 08:08:31
【问题描述】:

go 版本 go1.8.3 darwin/amd64

ulimit -c unlimited
env GOTRACEBACK=crash ./testgotraceback.go
ls -al 
no core file generated.

testgotraceback.go源文件

package main

import (
    "fmt"
    "time"
)

func saferoutine(c chan bool) {
    for i := 0; i < 10; i++ {
        fmt.Println("Count:", i)
        time.Sleep(1 * time.Second)
    }
    c <- true
}
func panicgoroutine(c chan bool) {
    time.Sleep(5 * time.Second)
    panic("Panic, omg ...")
    c <- true
}
func main() {
    c := make(chan bool, 2)
    go saferoutine(c)
    go panicgoroutine(c)
    for i := 0; i < 2; i++ {
        <-c
    }
}

我想使用核心文件来跟踪一些错误。但是使用 GOTRACEBACK=crash 命令,我找不到核心文件。使用 golang1.7 为好。 那么,有什么问题吗?谢谢帮助。

【问题讨论】:

    标签: go stack-trace coredump traceback


    【解决方案1】:

    如果您希望在运行程序的目录中创建核心转储文件,您不仅需要使用ulimit 并设置GOTRACEBACK,还需要将操作系统上的设置更改为将core文件保存到当前目录

    假设您使用的是 Linux,这是特定于发行版的。您需要找到相关的sysfs 条目并将core 值保存到其中。例如,Fedora 上的核心模式 sysfs 条目是 /proc/sys/kernel/core_pattern,并且要设置操作系统以将核心文件保存在当前目录中,您需要执行:

    echo core > /proc/sys/kernel/core_pattern
    

    【讨论】:

      猜你喜欢
      • 2012-09-13
      • 1970-01-01
      • 2018-07-28
      • 1970-01-01
      • 2021-06-25
      • 2012-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多