第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在工作過程中生成恐慌堆棧跟蹤

在工作過程中生成恐慌堆棧跟蹤

Go
江戶川亂折騰 2021-12-20 09:51:55
情況:我的 Go 服務器程序中存在競爭條件問題:go func() {    i := 1    for {        fmt.Printf("I am alive: %d\n",i)        time.Sleep(1 * time.Second)        i+=1    }}()對我的程序進行了大量并行請求后,它完全掛斷了,甚至main中的goroutine也不再寫任何東西。問題:我想消除這個問題。為此,我想panic在這種狀態(tài)下生成 a并接收所有 goroutine 的堆棧轉儲。有沒有辦法做到這一點?
查看完整描述

2 回答

?
繁花不似錦

TA貢獻1851條經(jīng)驗 獲得超4個贊

如果您想從 Go 進程獲取堆棧跟蹤,默認的信號處理程序SIGQUIT將打印堆棧跟蹤并退出。

還有一些有用的設置可以通過GODEBUGGOTRACEBACK環(huán)境變量啟用,記錄在運行時包中。在這種情況下,使用schedtrace、scheddetailgctrace可能有助于顯示程序凍結時發(fā)生的情況。


查看完整回答
反對 回復 2021-12-20
?
尚方寶劍之說

TA貢獻1788條經(jīng)驗 獲得超4個贊

種族檢測

你說你有比賽,你應該嘗試使用-race選項運行你的應用程序,例如

go run -race xx.go

如果在運行時檢測到數(shù)據(jù)競爭,它會提醒您(將源文件名和確切的行打印到控制臺)。

剖析

如果這沒有幫助(因為它們可能不會發(fā)生,所以沒有檢測到比賽),那么您應該分析您的應用程序。有一個標準的 HTTP 接口來分析數(shù)據(jù),請參閱net/http/pprof.

基本上import _ "net/http/pprof",然后啟動您的應用程序并訪問(使用您的端口):

http://localhost:8080/debug/pprof/

如果您的應用程序還沒有啟動網(wǎng)絡服務器,那么您必須這樣做:將net/http和添加log到您的導入中,并將以下代碼添加到您的主函數(shù)中:

go func() {
    log.Println(http.ListenAndServe("localhost:8080", nil))
    }()

可以在以下位置查看堆棧跟蹤

http://localhost:8080/debug/pprof/goroutine?debug=1

和完整的堆棧跟蹤

http://localhost:8080/debug/pprof/goroutine?debug=2

這些頁面允許您查看實時應用程序的所有 goroutine 的完整堆棧跟蹤,而無需終止它。


查看完整回答
反對 回復 2021-12-20
  • 2 回答
  • 0 關注
  • 154 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號