golang錯誤追蹤與調試

來源:互聯網
上載者:User

程式開發過程中總會遇到bug,所以bug的定位與分析就非常關鍵。
golang裡面定義了很多error,但有些時候只有error是很難定位到問題,所以還是需要堆棧資訊。
我們通常會先定義一個錯誤列印的函數,這樣可以對錯誤進行統一的處理和分析:

func ErrorPbResponse(errCode string, errMsg string) pb.Response {    LogMessage("errcode[" + errCode + "] Errmsg:" + errMsg)        if errCode == RESP_CODE_SYSTEM_ERROR {        PrintStack() //堆棧函數    }       //TODO}

那堆棧函數如下:

func PrintStack() {    var buf [4096]byte    n := runtime.Stack(buf[:], false)    fmt.Printf("==> %s\n", string(buf[:n]))}

具體效果如下:

errcode[5000] Errmsg:GetDataByCompositeKey 解密資料錯誤簽名已失效==> goroutine 374 [running]:main.PrintStack()    /chaincode/input/src/github.com/hyperledger/fabric/lychee/chaincode/go/cc_bscf/tool.go:54 +0x5bmain.ErrorPbResponse(0xb043e0, 0x4, 0xc420019c80, 0x37, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)    /chaincode/input/src/github.com/hyperledger/fabric/lychee/chaincode/go/cc_bscf/tool.go:47 +0x2b4main.agentCountQuery(0x1075c20, 0xc42007f680, 0xc42000c230, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, ...)    /chaincode/input/src/github.com/hyperledger/fabric/lychee/chaincode/go/cc_bscf/invoke_common.go:1263 +0x512main.(*SmartContract).Invoke(0x10c8d00, 0x1075c20, 0xc42007f680, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)    /chaincode/input/src/github.com/hyperledger/fabric/lychee/chaincode/go/cc_bscf/invoke_main.go:122 +0x193github.com/hyperledger/fabric/core/chaincode/shim.(*Handler).handleTransaction.func1(0xc4201e7dc0, 0xc4203910e0)    /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/shim/handler.go:329 +0x4f3created by github.com/hyperledger/fabric/core/chaincode/shim.(*Handler).handleTransaction    /opt/gopath/src/github.com/hyperledger/fabric/core/chaincode/shim/handler.go:295 +0x49

問題就能快速定位了!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.