Go 如何知道卡住程序中错误代码的编号

Go 如何知道卡住程序中错误代码的编号,go,Go,我的测试代码如下: var srcDbresult*sql.Rows srcDbresult,err=db.Query(sql) 如果出错!=零{ err=errors.Wrap(err,“db.Query error”) 打印(srcDbresult.Next()) 恐慌(错误) } 如果err不是nil,程序将挂起打印(srcDbresult.Next()),因为nil指针执行该方法。 所以我想知道程序是否像示例代码一样被卡住,如何知道错误代码的行号。我尝试过pprof,但它无法工作。如果

我的测试代码如下:

var srcDbresult*sql.Rows
srcDbresult,err=db.Query(sql)
如果出错!=零{
err=errors.Wrap(err,“db.Query error”)
打印(srcDbresult.Next())
恐慌(错误)
}
如果err不是nil,程序将挂起打印(srcDbresult.Next()),因为nil指针执行该方法。
所以我想知道程序是否像示例代码一样被卡住,如何知道错误代码的行号。我尝试过pprof,但它无法工作。

如果
err
不是
nil
,请不要触摸
srcDbresult
,它无效/可用

像这样使用它:

var srcDbresult *sql.Rows
srcDbresult, err = db.Query(sql)
if err != nil {
    err = errors.Wrap(err, "db.Query error")
    panic(err) // Return or handle the error somehow, but do not continue
}

defer srcDbresult.Close()

// You can use srcDbresult here:

这个例子只是一个简单的代码。真正的问题是在线程序被卡住了,我不知道错误的代码在哪里。@skl那么你是在找一个我们看不到的代码的调试帮助?这不是StackOverflow的主题。只要处理好所有的错误,你就应该知道哪里出了问题。但是你需要以某种方式处理所有的错误。这段代码也是我的新任务,而且这个程序是偶然的。整个过程是如此巨大,以至于我猜不出错误在哪一行。在这种情况下怎么办?对nil值调用方法不会导致程序挂起。pprof就是答案(特别是goroutine配置文件)。为什么它对你不起作用?@Peter我想你可以试试这个代码,你会知道它是否有效stuck@skl为什么要在错误处理块中打印
srcdresult.Next()
?@skl“错误代码数”是什么意思?你说的“挂”或“卡住”是什么意思?你的程序停止响应了吗?或者它真的是因为一个正确的恐慌堆栈跟踪而崩溃的?@skl我仍然不清楚你所说的“卡住”是什么意思。程序崩溃了吗?或者,它还活着但没有反应?