婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Golang捕獲panic堆棧信息的講解

Golang捕獲panic堆棧信息的講解

熱門標簽:南通如皋申請開通400電話 廣州呼叫中心外呼系統 高德地圖標注口訣 學海導航地圖標注 地圖標注的汽車標 浙江高速公路地圖標注 江西轉化率高的羿智云外呼系統 西部云谷一期地圖標注 中國地圖標注省會高清

golang當中panic的時候如果啟動的goroutine比較多,刷的信息滿屏都是,在終端工具上因為刷的信息太多,找不到前邊的信息,因此很有必要程序自己捕獲panic,并且將錯誤信息輸出到文件當中,以便定位排查問題。

Golang捕獲panic堆棧信息

func PanicTrace(kb int) []byte {
  s := []byte("/src/runtime/panic.go")
  e := []byte("\ngoroutine ")
  line := []byte("\n")
  stack := make([]byte, kb10) //4KB
  length := runtime.Stack(stack, true)
  start := bytes.Index(stack, s)
  stack = stack[start:length]
  start = bytes.Index(stack, line) + 1
  stack = stack[start:]
  end := bytes.LastIndex(stack, line)
  if end != -1 {
    stack = stack[:end]
  }
  end = bytes.Index(stack, e)
  if end != -1 {
    stack = stack[:end]
  }
  stack = bytes.TrimRight(stack, "\n")
  return stack
}

該函數的優點:

  • 比直接recover()捕獲的panic信息更加詳盡
  • 比直接放任其panic打印的堆棧信息更精準,第一行就是發生panic的代碼行
  • 比直接放任其panic打印的堆棧信息更簡潔,可以指定信息量(kb)

最后注意,如果是啟動的多goroutine,需要在每個goroutine執行函數的時候,寫上defer PanicHandler() 否則的話是捕獲不到其他goroutine當中的painc信息的。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

您可能感興趣的文章:
  • golang panic及處理機制

標簽:曲靖 貴州 吐魯番 保定 東營 許昌 常州 德宏

巨人網絡通訊聲明:本文標題《Golang捕獲panic堆棧信息的講解》,本文關鍵詞  Golang,捕獲,panic,堆棧,信息,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Golang捕獲panic堆棧信息的講解》相關的同類信息!
  • 本頁收集關于Golang捕獲panic堆棧信息的講解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 民丰县| 寿宁县| 永平县| 宁乡县| 永川市| 甘孜县| 西吉县| 疏附县| 陆丰市| 通城县| 波密县| 阿拉尔市| 张家界市| 綦江县| 南雄市| 长沙县| 边坝县| 荆州市| 边坝县| 武功县| 永修县| 军事| 梁河县| 谢通门县| 城步| 安福县| 如东县| 贵南县| 自贡市| 黔江区| 昌黎县| 彭水| 明光市| 兴文县| 济阳县| 黄石市| 绩溪县| 临猗县| 磐安县| 马鞍山市| 吉安市|