自從比特幣源碼研讀班開辦以來,大家大部分時(shí)間是在純看代碼,沿著代碼中各函數(shù)的調(diào)用順序逐行閱讀,逐行理解,有時(shí)理解不了的大家會在群里討論、或在代碼中添加日志打印、或Linux編程經(jīng)驗(yàn)豐富者會通過gdb調(diào)試方式來實(shí)現(xiàn)對相應(yīng)代碼的理解。但對于大多數(shù)習(xí)慣使用Windows系統(tǒng)的用戶來說,可視化方式調(diào)試和理解代碼更為有意義,如我們在Windows中可以使用Visual Studio來調(diào)試代碼。因此,帶著這個(gè)訴求,我也在想辦法找到這個(gè)方便的調(diào)試方法。在一次與研習(xí)社搞區(qū)塊鏈開發(fā)的社友交流后,得知Visual Studio+Visual GDB,于是我第一時(shí)間進(jìn)行了親測,經(jīng)過一番試驗(yàn),終于搞定了在Windows下遠(yuǎn)程調(diào)試Ubuntu下的QYB源碼(基于比特幣改造的研習(xí)社第一代代幣),其調(diào)試方法與比特幣是一樣的。調(diào)試效果如圖所示:

從圖中我們可以看到,通過VS+Visual GDB可以調(diào)試VS程序一樣對Linux下的代碼進(jìn)行調(diào)試,即可以設(shè)置斷點(diǎn)、查看變量值、單步調(diào)試等,所以還是很方便的。下面我將詳細(xì)說明如何搭建調(diào)試環(huán)境。
一、編譯環(huán)境準(zhǔn)備
首先需要在Windows機(jī)器中安裝VS和Visual GDB,VS的版本需2010之上,本文使用的是2010版,VS的安裝對于大部分程序員來說都不陌生,這里就不詳細(xì)說明,不熟悉者可自行百度相關(guān)資料安裝。然后就是Visual GDB的安裝了,其前提是大家已經(jīng)完成了VS的安裝。下面是VisualGDB5.3的下載鏈接:
鏈接:https://pan.baidu.com/s/1dvc8dovVioc2HWbZuqkTzA 密碼:3etx。
下載完成后包含如下兩個(gè)文件:

下載完之后點(diǎn)擊安裝VisualGDB-5.3-preview6.msi,安裝完之后記得點(diǎn)擊PatchVisualGDB.exe。
在完成了Visual GDB的安裝之后,在Visual Studio 2010的“項(xiàng)目”選項(xiàng)中會增加“Visual GDB”模板,該模板的工程中會可以看到“Linux Project Wizard”工程。此時(shí)表明Visual GDB已安裝成功。

下載完之后點(diǎn)擊安裝VisualGDB-5.3-preview6.msi,安裝完之后記得點(diǎn)擊PatchVisualGDB.exe。
在完成了Visual GDB的安裝之后,在Visual Studio 2010的“項(xiàng)目”選項(xiàng)中會增加“Visual GDB”模板,該模板的工程中會可以看到“Linux Project Wizard”工程。此時(shí)表明Visual GDB已安裝成功。
Visual GDB中頭文件、鏈接庫等基本設(shè)置大家可以參照《VisualGDB的基本使用》這篇文章來學(xué)習(xí)和操作,其鏈接如下:
https://blog.csdn.net/RichardWQJ/article/details/79872178
二、調(diào)試工程搭建
在完成了VS+VisualGDB的安裝后,我們就可以開始調(diào)試比特幣源碼了,當(dāng)然在調(diào)試比特幣源碼之前我們需要先編譯好比特幣源碼,并生成bitcoind等執(zhí)行程序,關(guān)于比特幣源碼的編譯大家可以參考我的另一篇文章《聊聊比特幣(Bitcoin)客戶端源碼編譯那些事》。如果比特幣源碼已編譯好,我們可以正式開始搭建比特幣的調(diào)試之旅了。
第一步是新建Linux工程,具體是打開VS->文件菜單->新建->項(xiàng)目->模板->VisualGDB->Linux?Project Wizard,在名稱處填寫“bitcoin”,如圖所示:

下一步點(diǎn)擊“確定”,進(jìn)入項(xiàng)目類型選擇界面:

下一步點(diǎn)擊“Import a project”選項(xiàng),默認(rèn)選擇“Import a project built with other tools”。

點(diǎn)擊下一步進(jìn)入“遠(yuǎn)程計(jì)算機(jī)選擇”界面,如圖所示:

在該界面中,我們需選擇要調(diào)試比特幣程序所在Linux計(jì)算機(jī),在上圖中我們可以看到已有一個(gè)默認(rèn)的遠(yuǎn)程計(jì)算機(jī),這個(gè)是之前連接過的遠(yuǎn)程計(jì)算機(jī),開發(fā)環(huán)境默認(rèn)記錄的地址,如果要選擇新的遠(yuǎn)程計(jì)算機(jī),則需點(diǎn)擊下方的“Deploy the project to another Linux
computer”,然后點(diǎn)擊“Deployment computer”的下拉框,彈出如下所示頁面:

然后點(diǎn)擊“Create a new SSH connection”選項(xiàng),彈出遠(yuǎn)程計(jì)算機(jī)信息填寫頁面,具體填寫內(nèi)容如下:

填寫完成后,點(diǎn)擊“Create”,然后等待驗(yàn)證,如果驗(yàn)證成功則返回前頁面,此刻繼續(xù)點(diǎn)擊“Next”即可,進(jìn)入源碼選擇頁面,在該頁面中我們點(diǎn)擊源碼目錄選擇按鈕,在彈出的對話框中會彈出遠(yuǎn)程Linux計(jì)算機(jī)的文件目錄,我們在此找到比特幣源碼所在目錄即可。

然后,繼續(xù)下一步進(jìn)入源碼訪問模式頁面,即源碼是遠(yuǎn)程訪問,還是在本地拷貝一份,此處建議選擇“Copy sources locally and upload modified
files during build”選項(xiàng)。然后點(diǎn)擊下一步,會在將文件拷貝至本地工程目錄下,該過程需要一點(diǎn)時(shí)間,等待源碼下載完成即可。
文件拷貝結(jié)束后,進(jìn)入“編譯和調(diào)試”頁面,在此處我們主要是找到編譯好的bitcoind執(zhí)行文件,找到該文件后,點(diǎn)擊“Finish”即可實(shí)現(xiàn)調(diào)試工程的搭建。

三、開始調(diào)試
在完成調(diào)試工程搭建后,我們在Visual Studio中可以看到創(chuàng)建的工程,在該工程中還包含了從遠(yuǎn)程計(jì)算機(jī)中拷貝過來的源碼,其效果如圖:

此時(shí)我們可以打開源碼,并設(shè)置斷點(diǎn),程序運(yùn)行時(shí)我們就可以在斷點(diǎn)處進(jìn)行調(diào)試了。
我們知道比特幣程序在啟動時(shí)可以設(shè)置相應(yīng)的參數(shù),我們在看比特幣源碼時(shí)也會遇到不同參數(shù)狀態(tài)下,比特幣程序執(zhí)行不同的代碼,現(xiàn)在有了調(diào)試方法,我們可以更直觀得理解這些參數(shù)的意義了,那么這些參數(shù)在調(diào)試工程中如何設(shè)置呢?我們選中調(diào)試工程,點(diǎn)擊右鍵,在彈出的菜單中選擇“VisualGDB Project Properties”選項(xiàng),然后在彈出的對話框中找到“Debug Setting”頁面,在該頁面中找到“Main executable arguments”項(xiàng),在其后的編輯框中填入相應(yīng)的參數(shù),各參數(shù)之間以空格隔開即可。


在完成了相應(yīng)參數(shù)設(shè)置后,我們就可以啟動比特幣程序進(jìn)行調(diào)試了。具體調(diào)試方法可詳細(xì)參見Visual Studio的調(diào)試方法。
如果大家想?yún)⒓釉创a研讀班可以加我微信:forest21000,第五期的研讀班招募令鏈接如下