下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第Go語言編譯原理之源碼調(diào)試目錄前言Goland的debug調(diào)試Go源碼dlv工具調(diào)試Go源碼安裝常用命令dlv調(diào)試抽象語法樹構(gòu)建
前言
在前邊幾篇文章中分享了Go編譯過程中的源碼實現(xiàn),本文主要是想分享一下我是怎么調(diào)試Go的源代碼的(如果你很熟悉的話,可以跳過本文)。本文主要是分享兩種Go源碼的調(diào)試方法
Goland的debugdlv工具
本文我還會以抽象語法樹為例,來通過dlv對它的構(gòu)建過程進(jìn)行調(diào)試
Goland的debug調(diào)試Go源碼
下邊以調(diào)試Go編譯的入口文件為例
編輯debug配置
填寫配置信息
打斷點(diǎn),并開始執(zhí)行
調(diào)試
這些調(diào)試按鈕的功能其實跟其他的IDEA是一樣的,之前整理過,這里不重復(fù)整理了,不清楚的小伙伴可以看這里
dlv工具調(diào)試Go源碼
安裝
這里以mac為例
brewinstalldlv
啟動
$dlvdebug待調(diào)試文件
常用命令
可以通過下邊的方式查看一些常用的命令
$gcdlvdebug/usr/local/go/src/cmd/compile/main.go
Type'help'forlistofcommands.
(dlv)help
Thefollowingcommandsareavailable:
Runningtheprogram:
call------------------------(EXPERIMENTAL!!!)恢復(fù)進(jìn)程,注入函數(shù)調(diào)用(實驗的)
continue(alias:c)---------運(yùn)行到斷點(diǎn)或程序終止
next(alias:n)-------------執(zhí)行下一行.
rebuild---------------------重新生成目標(biāo)可執(zhí)行文件并重新啟動它.如果可執(zhí)行文件不是由dlv構(gòu)建,它就不能工作.
restart(alias:r)----------重新啟動一個進(jìn)程.
step(alias:s)-------------單步調(diào)試.
step-instruction(alias:si)Singlestepasinglecpuinstruction.
stepout(alias:so)---------Stepoutofthecurrentfunction.
Manipulatingbreakpoints:
break(alias:b)-------設(shè)置一個端點(diǎn).
breakpoints(alias:bp)打印所有的端點(diǎn)信息.
clear------------------清除端點(diǎn).
clearall---------------刪除多個端點(diǎn).
condition(alias:cond)設(shè)置斷點(diǎn)條件.
on---------------------在命中斷點(diǎn)時執(zhí)行命令.
toggle-----------------打開或關(guān)閉斷點(diǎn).
trace(alias:t)-------Settracepoint.
watch------------------Setwatchpoint.
Viewingprogramvariablesandmemory:
args-----------------打印函數(shù)參數(shù).
display--------------每次程序停止時打印表達(dá)式的值.
examinemem(alias:x)檢查給定地址的原始內(nèi)存.
locals---------------打印局部變量.
print(alias:p)-----打印變量值.
regs-----------------打印CPU寄存器的內(nèi)容.
set------------------更改變量的值.
vars-----------------打印包變量.
whatis---------------打印表達(dá)式的類型.
Listingandswitchingbetweenthreadsandgoroutines:
goroutine(alias:gr)--顯示或更改當(dāng)前goroutine
goroutines(alias:grs)列出程序goroutines.
thread(alias:tr)-----切換到指定的線程.
threads----------------打印每個跟蹤線程的信息.
Viewingthecallstackandselectingframes:
deferred---------在延遲調(diào)用的上下文中執(zhí)行命令.
down-------------向下移動當(dāng)前幀.
frame------------設(shè)置當(dāng)前幀,或在其他幀上執(zhí)行命令.
stack(alias:bt)打印堆棧信息.
up---------------向上移動當(dāng)前幀
Othercommands:
config---------------------更改配置參數(shù).
disassemble(alias:disass)Disassembler.
dump-----------------------從當(dāng)前進(jìn)程狀態(tài)創(chuàng)建核心轉(zhuǎn)儲
edit(alias:ed)-----------Openwhereyouarein$DELVE_EDITORor$EDITOR
exit(alias:quit|q)-----退出調(diào)試.
funcs----------------------打印函數(shù)列表.
help(alias:h)------------打印幫助信息.
libraries------------------列出加載的動態(tài)庫
list(alias:ls|l)-------展示源代碼.
source---------------------執(zhí)行包含delve命令列表的文件
sources--------------------打印源文件列表
types----------------------打印類型列表
Typehelpfollowedbyacommandforfulldocumentation.
(dlv)
dlv調(diào)試抽象語法樹構(gòu)建
下邊利用dlv來調(diào)試Go編譯過程中的抽象語法樹構(gòu)建。我這里沒有粘代碼,你可以打開源代碼對著下邊看
啟動dlv,并調(diào)試Go編譯的入口文件
設(shè)置斷點(diǎn)、continue的使用、n的使用(r設(shè)置編譯器編譯目
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)院感染的培訓(xùn)試題及答案
- 詞匯運(yùn)用試題及答案
- 低碳經(jīng)濟(jì)培訓(xùn)考試試卷及答案(標(biāo)準(zhǔn)版)
- 支氣管哮喘、支氣管擴(kuò)張、肺炎及肺膿腫、肺結(jié)核聯(lián)合試題(附答案)
- 年建筑安全員c證考試題庫及答案
- 醫(yī)院感染管理培訓(xùn)試題及答案
- 茶藝師考試題及參考答案
- 學(xué)法考試題庫及答案
- 食品檢驗相關(guān)知識要點(diǎn)測試試卷及答案解析
- 醫(yī)院感染管理知識考核試卷及答案
- 北京市順義區(qū)2025-2026學(xué)年八年級上學(xué)期期末考試英語試題(原卷版+解析版)
- 中學(xué)生冬季防溺水主題安全教育宣傳活動
- 2026年藥廠安全生產(chǎn)知識培訓(xùn)試題(達(dá)標(biāo)題)
- 2026年陜西省森林資源管理局局屬企業(yè)公開招聘工作人員備考題庫及參考答案詳解1套
- 冷庫防護(hù)制度規(guī)范
- 承包團(tuán)建燒烤合同范本
- 英語A級常用詞匯
- 小兒支氣管炎護(hù)理課件
- NB-T 47013.15-2021 承壓設(shè)備無損檢測 第15部分:相控陣超聲檢測
- 打針協(xié)議免責(zé)書
- 四川省成都市八年級上學(xué)期物理期末考試試卷及答案
評論
0/150
提交評論