golang?debug調(diào)試的實(shí)現(xiàn)
1. 本地調(diào)試
1:Add Configurations 添加配置文件(Run kind :Directory)



2:進(jìn)入run運(yùn)行窗口


3:debug斷點(diǎn)調(diào)試模式



1. Resume Program (繼續(xù)運(yùn)行)
圖標(biāo): ?? 或 ? 快捷鍵: F9(Windows/Linux)、Command+Option+R(Mac) 作用: 程序會(huì)繼續(xù)運(yùn)行直到下一個(gè)斷點(diǎn)或調(diào)試結(jié)束。如果沒(méi)有更多斷點(diǎn),程序會(huì)正常執(zhí)行至結(jié)束。
2. Step Over (單步跳過(guò))
圖標(biāo): ? 快捷鍵: F8(Windows/Linux)、Command+F8(Mac) 作用: 單步執(zhí)行當(dāng)前代碼行,但不會(huì)進(jìn)入函數(shù)內(nèi)部(如果當(dāng)前行是函數(shù)調(diào)用,會(huì)跳過(guò)函數(shù)內(nèi)部的執(zhí)行)。
3. Step Into (單步進(jìn)入)
圖標(biāo): ??↘? 快捷鍵: F7(Windows/Linux)、Command+Option+Down(Mac) 作用: 進(jìn)入當(dāng)前行調(diào)用的函數(shù)內(nèi)部進(jìn)行調(diào)試。如果該行沒(méi)有函數(shù)調(diào)用,則執(zhí)行下一行代碼。
4. Step Out (單步返回)
圖標(biāo): ↖??? 快捷鍵: Shift+F8(Windows/Linux)、Command+Option+Up(Mac) 作用: 跳出當(dāng)前函數(shù),返回到調(diào)用此函數(shù)的上一層,并暫停在那里。
5. Evaluate Expression (表達(dá)式求值)
圖標(biāo): ?? 快捷鍵: Alt+F8(Windows/Linux)、Option+F8(Mac) 作用: 允許你在調(diào)試過(guò)程中動(dòng)態(tài)評(píng)估某個(gè)表達(dá)式的值,非常適合臨時(shí)檢查復(fù)雜變量或表達(dá)式的運(yùn)行結(jié)果。
6. Show Execution Point (顯示當(dāng)前執(zhí)行點(diǎn))
圖標(biāo): ?? 或 ?? 快捷鍵: Alt+F10(Windows/Linux)、Option+Command+P(Mac) 作用: 跳轉(zhuǎn)到當(dāng)前程序執(zhí)行的代碼位置(特別適合在查看其他文件后快速回到當(dāng)前斷點(diǎn))。
7. Drop Frame (回退當(dāng)前棧幀)
圖標(biāo): ?? 作用: 重置當(dāng)前棧幀的狀態(tài),從當(dāng)前函數(shù)重新執(zhí)行一遍。這不會(huì)改變?nèi)殖绦驙顟B(tài),僅適用于當(dāng)前函數(shù)調(diào)用。
8. Stop (停止調(diào)試)
圖標(biāo): ■ 快捷鍵: Ctrl+F2(Windows/Linux)、Command+F2(Mac) 作用: 停止調(diào)試會(huì)話(huà),終止當(dāng)前調(diào)試運(yùn)行。
9. Mute Breakpoints (屏蔽斷點(diǎn))
圖標(biāo): ???(小喇叭) 作用: 暫時(shí)禁用所有斷點(diǎn),但不刪除。程序會(huì)無(wú)視所有斷點(diǎn)直接運(yùn)行。
10. View Breakpoints (查看斷點(diǎn)列表)
圖標(biāo): ??? 快捷鍵: Ctrl+Shift+F8(Windows/Linux)、Command+Shift+F8(Mac) 作用: 打開(kāi)斷點(diǎn)管理窗口,方便查看、啟用、禁用或刪除斷點(diǎn)。
如法炮制,下面是Run kind另外兩種調(diào)試:
Run kind :Package



Run kind :File




2. 附加到進(jìn)程
1:安裝插件
go install github.com/google/gops@latest


2:編譯指定參數(shù)
go build -gcflags="all=-N -l" -o demo.exe

3:附加到進(jìn)程





4. 遠(yuǎn)程調(diào)試
1:設(shè)置編譯環(huán)境變量
$Env:CGO_ENABLED=0;$Env:GOARCH="amd64";$Env:GooS="linux"

2:編譯運(yùn)行文件
# 命令二選一皆可以 go build -o main .\main.go go build -gcflags="all=-N -l" -o main

3:上傳到服務(wù)器執(zhí)行(使用ftp工具或者rz命令上傳都行)
sudo chmod +x main

4:服務(wù)器需要安裝go環(huán)境,這里不講解,自行安裝

5:服務(wù)器安裝調(diào)試工具,進(jìn)行進(jìn)程監(jiān)控轉(zhuǎn)發(fā),遠(yuǎn)程調(diào)試
go install github.com/go-delve/delve/cmd/dlv@latest

6:配置遠(yuǎn)程調(diào)試
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./main -- -j=10







下面是遠(yuǎn)程調(diào)試的另一種方式
1:通過(guò)進(jìn)程id監(jiān)控
ps -aux | grep main //查看進(jìn)程信息 dlv --listen=:2345 --headless=true --api-version=2 attach 898805 //添加進(jìn)程


2:進(jìn)入debug

到此這篇關(guān)于golang debug調(diào)試的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)golang debug調(diào)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go Run, Go Build, Go Install的區(qū)別
本文深入探討Go語(yǔ)言中g(shù)orun、gobuild和goinstall三個(gè)常用命令的功能區(qū)別和適用場(chǎng)景,文中通過(guò)具體代碼示例,詳細(xì)解釋了各命令的使用方式及其應(yīng)用場(chǎng)景,幫助開(kāi)發(fā)者高效利用這些工具2024-10-10
Go語(yǔ)言中nil判斷的注意事項(xiàng)(最新推薦)
本文給大家介紹Go語(yǔ)言中nil判斷的注意事項(xiàng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2025-06-06
go語(yǔ)言csrf庫(kù)使用實(shí)現(xiàn)原理示例解析
這篇文章主要為大家介紹了go語(yǔ)言csrf庫(kù)使用實(shí)現(xiàn)原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
深入了解Golang中的Slice底層實(shí)現(xiàn)
本文主要為大家詳細(xì)介紹了Golang中slice的底層實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2023-02-02
Golang比較兩個(gè)slice是否相等的問(wèn)題
本文主要介紹了Golang比較兩個(gè)slice是否相等的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Go語(yǔ)言中如何通過(guò)方法為類(lèi)型添加行為
這篇文章主要介紹了Go語(yǔ)言中如何通過(guò)方法為類(lèi)型添加行為的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
Go 1.23中Timer無(wú)buffer的實(shí)現(xiàn)方式詳解
在 Go 1.23 中,Timer 的實(shí)現(xiàn)通常是通過(guò) time 包提供的 time.Timer 類(lèi)型來(lái)實(shí)現(xiàn)的,本文主要介紹了Go 1.23中Timer無(wú)buffer的實(shí)現(xiàn)方式,需要的可以了解下2025-03-03

