2.5 visual studio調(diào)試nodeos

2.5.1 前言

? ? ? ?Visual Studio在調(diào)試c++程序時(shí),調(diào)式信息通是過(guò)界面的方式展示出來(lái)的,這很方便了我們的開(kāi)發(fā)人員,那么如果只有源代碼,而沒(méi)有把源代碼創(chuàng)建成解決方案,比如,linux環(huán)境下的C++工程,沒(méi)有Visual Studio的解決方案工程,那么如何快速的調(diào)式這個(gè)項(xiàng)目呢?

? ? ? ?Visual Studio提供了打開(kāi)一個(gè)代碼文件夾,配置一些詳細(xì)信息來(lái)運(yùn)行和調(diào)試文件夾中的代碼。下面將詳細(xì)介紹如何通過(guò)打開(kāi)文件夾的代碼開(kāi)始調(diào)式程序。

?2.5.2 原理介紹

? ? ? ?Visual Studio能夠通過(guò)打開(kāi)文件夾的代碼開(kāi)始調(diào)式程序,相當(dāng)于Visual Studio和linux系統(tǒng)之間通過(guò)配置信息建立了某些映射關(guān)系,通過(guò)windows下和linux下的目錄使用同一份代碼進(jìn)行調(diào)式,將linux系統(tǒng)下調(diào)式結(jié)果傳輸?shù)絍isual Studio中,展示出來(lái)。

打開(kāi)文件夾進(jìn)行調(diào)試通過(guò) .json 文件來(lái)自定義配置信息:?

tasks.vs.json 指定自定義生成命令和編譯器開(kāi)關(guān),以及任意(與非生成相關(guān))任務(wù)。?

通過(guò)“解決方案資源管理器”右鍵單擊菜單項(xiàng)“配置任務(wù)”進(jìn)行訪問(wèn)。?

launch.vs.json 指定用于調(diào)試的命令行參數(shù)。?

通過(guò)“解決方案資源管理器”右鍵單擊菜單項(xiàng)“調(diào)試和啟動(dòng)設(shè)置”進(jìn)行訪問(wèn)。?

這些.json文件位于代碼庫(kù)根文件夾中一個(gè)名為.vs的隱藏文件夾中。 當(dāng)你在“解決方案資源管理器”中的文件或文件夾上選擇“配置任務(wù)”或“調(diào)試和啟動(dòng)設(shè)置”時(shí),Visual Studio 會(huì)根據(jù)需要?jiǎng)?chuàng)建 tasks.vs.json 和 launch.vs.json 文件。

tasks.vs.json

task配置

taskName? : 指定右鍵單擊菜單中顯示的名稱?

appliesTo : 指定可在其中執(zhí)行命令的文件?

type? ? :? 指用于調(diào)試的代碼庫(kù)的配置文件類型? ?

launch.vs.json

launch配置

name :? 指windows下的代碼目錄?

cwd : 指linux下的代碼目錄?

program? : 指linux下的代碼編譯成功后的執(zhí)行程序?

MIMode : 指使用gdb方式調(diào)式?

remoteMachineName : 遠(yuǎn)程配置的主機(jī)名?

2.5.3 環(huán)境準(zhǔn)備

在調(diào)試之前我們需要以下環(huán)境并安裝一些軟件:?

1.環(huán)境:win7及以上版本的操作系統(tǒng),CentOS或ubuntu等任何一種linux操作系統(tǒng);?

2.安裝軟件:windows操作系統(tǒng)上安裝VS2015及以上版本;linux系統(tǒng)上安裝gcc、g++和gdbserver,ssh-server軟件;?

注意:?

在linux系統(tǒng)上安裝好ssh軟件后,需要啟動(dòng)ssh-server服務(wù),保證調(diào)式程序時(shí),能將linux下的調(diào)試結(jié)果傳回到Visual Studio的界面中。?

ssh-server服務(wù)的啟動(dòng)命令:?

CentOS系統(tǒng) : systemctl start sshd?

redhat系統(tǒng) : service sshd start?

ubuntu系統(tǒng) : service ssh start? ?

2.5.4 vs打開(kāi)文件夾調(diào)試程序

我們以vs2017調(diào)試eos代碼為例:?

1.通過(guò)文件夾打開(kāi)代碼,vs界面中選擇:文件->打開(kāi)->文件夾,然后彈出下面的對(duì)話框,選擇代碼的路徑;本機(jī)windows下的代碼在E:\work\eos\source\stable code\eos-v1.6.3\eos中。

代碼目錄

打開(kāi)文件夾后,代碼工程如下:

代碼工程目錄

2.配置遠(yuǎn)程環(huán)境,這是我們程序運(yùn)行的linux環(huán)境,需要在配置ssh遠(yuǎn)程訪問(wèn),用于將調(diào)試結(jié)果傳回vs界面。

vs界面中選擇:工具->選項(xiàng)->跨平臺(tái)->連接管理器,界面如下圖所示:

登錄設(shè)置

添加ssh遠(yuǎn)程訪問(wèn)連接配置:點(diǎn)擊添加按鈕,界面如下:

ssh配置

3.生成配置任務(wù) tasks.vs.json 文件,右鍵解決方案(eos),彈出如下窗口,選擇"配置任務(wù)",如下圖:

配置任務(wù)

tasks.vs.json 文件生成后,不需要修改其中的內(nèi)容。

任務(wù)文件

4.設(shè)置“調(diào)試”和“啟動(dòng)”的launch.vs.json配置文件,右鍵解決方案(eos),彈出如下窗口,選擇“調(diào)試”和“啟動(dòng)”設(shè)置,會(huì)彈出選擇gdb的方式:

調(diào)試設(shè)置

需要選擇遠(yuǎn)程機(jī)器的調(diào)試方式,我們選擇C/C++ Launch for Linux(gdb) :

選擇調(diào)試程序

點(diǎn)擊選擇按鈕后,會(huì)彈出launch.vs.json文件,需要修改此文件:

原launch.vs.json文件:

原始launch文件

修改后的launch.vs.json文件如下:

修改launch文件

5.json配置文件生成和修改完成后,需要先在linux目錄下,把程序編譯成功,生成可執(zhí)行文件,生成的可執(zhí)行程序路徑必須和launch.vs.json文件中program的配置路徑程序一致。

然后就可以開(kāi)始調(diào)式程序了,右鍵解決方案(eos),彈出如下窗口,選擇“調(diào)試“,程序就開(kāi)始啟動(dòng)調(diào)試了:

啟動(dòng)調(diào)試

至此,我們的程序就調(diào)試運(yùn)行起來(lái)了,如下圖:

程序運(yùn)行

2.5.5 總結(jié)

程序不能正常啟動(dòng)調(diào)試的原因:?

1.windows目錄下的代碼和linux目錄下的代碼不是同一份,導(dǎo)致啟動(dòng)調(diào)試異常。?

2.linux下的程序需要編譯成debug版本,否則不能正常啟動(dòng)調(diào)試。?

3.launch.vs.json文件中remoteMachineName遠(yuǎn)程主機(jī)配置的不對(duì)或者ssh服務(wù)沒(méi)有啟動(dòng),導(dǎo)致不能正常啟動(dòng)調(diào)試。?

4.launch.vs.json文件中program執(zhí)行程序的路徑和執(zhí)行程序的名稱配置不對(duì),導(dǎo)致不能正常啟動(dòng)調(diào)試。?

鏈接

星河公鏈官網(wǎng)

2.5 visual studio調(diào)試nodeos-wx5ca1790914ac4的博客-51CTO博客

2.5 visual studio調(diào)試nodeos - arm_snow的博客 - CSDN博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容