最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Golang捕獲panic堆棧信息的講解

 更新時間:2019年04月02日 08:55:15   作者:墨子哲  
今天小編就為大家分享一篇關(guān)于Golang捕獲panic堆棧信息的講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

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

Golang捕獲panic堆棧信息

func PanicTrace(kb int) []byte {
  s := []byte("/src/runtime/panic.go")
  e := []byte("\ngoroutine ")
  line := []byte("\n")
  stack := make([]byte, kb<<10) //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
}

該函數(shù)的優(yōu)點:

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

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

總結(jié)

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

相關(guān)文章

  • Go存儲基礎(chǔ)使用direct io方法實例

    Go存儲基礎(chǔ)使用direct io方法實例

    這篇文章主要介紹了Go存儲基礎(chǔ)之如何使用direct io方法實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12
  • 使用golang腳本基于kubeadm創(chuàng)建新的token(問題分析)

    使用golang腳本基于kubeadm創(chuàng)建新的token(問題分析)

    這篇文章主要介紹了使用golang腳本基于kubeadm創(chuàng)建新的token(問題分析),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-10-10
  • Golang實現(xiàn)四種負(fù)載均衡的算法(隨機,輪詢等)

    Golang實現(xiàn)四種負(fù)載均衡的算法(隨機,輪詢等)

    本文介紹了示例介紹了Golang 負(fù)載均衡的四種實現(xiàn),主要包括了隨機,輪詢,加權(quán)輪詢負(fù)載,一致性hash,感興趣的小伙伴們可以參考一下
    2021-06-06
  • 使用Go語言實現(xiàn)跨域資源共享(CORS)設(shè)置

    使用Go語言實現(xiàn)跨域資源共享(CORS)設(shè)置

    在Web開發(fā)中,跨域資源共享(CORS)是一種重要的安全機制,它允許許多資源在一個網(wǎng)頁上被另一個來源的網(wǎng)頁所訪問,然而,出于安全考慮,瀏覽器默認(rèn)禁止這種跨域訪問,為了解決這個問題,我們可以使用Go語言來設(shè)置CORS,需要的朋友可以參考下
    2024-06-06
  • Go語言并發(fā)控制之sync.WaitGroup使用詳解

    Go語言并發(fā)控制之sync.WaitGroup使用詳解

    這篇文章主要為大家詳細(xì)介紹了Go語言并發(fā)控制中sync.Map的原理與使用,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • go語言中的defer關(guān)鍵字

    go語言中的defer關(guān)鍵字

    這篇文章介紹了go語言中的defer關(guān)鍵字,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • Go中的gRPC入門教程詳解

    Go中的gRPC入門教程詳解

    本文詳細(xì)講解了Go中的gRPC入門教程,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • 一文詳細(xì)介紹golang中.()類型斷言的使用方法

    一文詳細(xì)介紹golang中.()類型斷言的使用方法

    Golang是一門非常流行的編程語言,在很多領(lǐng)域都有著廣泛的應(yīng)用,在開發(fā)過程中,很多時候我們需要將函數(shù)作為參數(shù)傳遞給其他函數(shù),這時候就需要用到golang中的.()用法,本文將詳細(xì)介紹golang中.()的使用方法,需要的朋友可以參考下
    2023-08-08
  • 使用Go語言計算字符串編輯距離的代碼實現(xiàn)

    使用Go語言計算字符串編輯距離的代碼實現(xiàn)

    在自然語言處理、拼寫糾錯、模糊搜索等場景中,我們經(jīng)常需要衡量兩個字符串之間的相似度,編輯距離(Edit Distance)  就是一個經(jīng)典的衡量方式,它描述了將一個字符串轉(zhuǎn)換為另一個字符串所需的最少操作次數(shù),本文給大家介紹了如何使用Go語言計算字符串編輯距離
    2025-07-07
  • Go語言中數(shù)組的基本用法演示

    Go語言中數(shù)組的基本用法演示

    這篇文章主要介紹了Go語言中數(shù)組的基本用法演示,包括一個冒泡排序算法的簡單實現(xiàn),需要的朋友可以參考下
    2015-10-10

最新評論

宁陕县| 武安市| 渝中区| 罗平县| 百色市| 泗洪县| 仁布县| 顺昌县| 云梦县| 莲花县| 普定县| 潞西市| 德州市| 定襄县| 延寿县| 达日县| 玛沁县| 射阳县| 周宁县| 甘孜| 鄯善县| 五常市| 万州区| 越西县| 屯昌县| 界首市| 塘沽区| 延吉市| 措勤县| 遵义市| 高邮市| 周至县| 浦江县| 桃江县| 海阳市| 淮滨县| 云南省| 株洲市| 郯城县| 班玛县| 凤阳县|