【編譯工具】VS Code混合調(diào)試 C/C++ 和 Node.js
目前經(jīng)常使用的IDE工具有如下幾種:
VSCode,各種平臺(tái)下的用戶體驗(yàn)都是極好的,代碼主題和顯示效果都是最佳的,而且輕量級(jí)的,資源消耗少;另外支持多種語言的開發(fā),只需安裝相應(yīng)的插件,安裝、配置、學(xué)習(xí)的成本都是很低的。

CLion,Jetbrains公司推出的一款專為開發(fā)C/C++所設(shè)計(jì)的跨平臺(tái)IDE,不得不說Jetbrains出的產(chǎn)品就是讓人信賴,用戶體驗(yàn)也是很不錯(cuò)的,我喜歡使用clion調(diào)試cmake工程,只需簡(jiǎn)單的引入工程就可正常的開發(fā)調(diào)試,還是很爽歪歪的。另外使用過一段時(shí)間Intellij IDEA開發(fā)過JAVA程序,真的開發(fā)效率大大提升,真的是Java程序員的神兵利器!大愛!不過因?yàn)槭腔贘ava虛機(jī)JDK開發(fā)運(yùn)行的,所以資源消耗較多,這點(diǎn)體驗(yàn)不是很好。
Visual studio,經(jīng)常使用VS在Windows下面調(diào)試大型程序,對(duì)于一個(gè)含有很多工程的大型程序來說,VS毋庸置疑是最佳的開發(fā)和調(diào)試工具,對(duì)于C++的初學(xué)者和開發(fā)者來說都是很不錯(cuò)的選擇。就像一個(gè)小伙伴曾經(jīng)說過的那樣,使用VS追蹤死鎖問題都是非常方便的。對(duì)于打算開始入手學(xué)習(xí)WebRTC的童鞋還是建議從Windows VS工程開始搞起。
對(duì)于經(jīng)常多語言開發(fā)的童鞋,VSCode絕對(duì)是明智的選擇,我使用最多的還是C++、Node.js的混合開發(fā)調(diào)試以及go語言的開發(fā),而且VSCode對(duì)與docker的支持也是體驗(yàn)很爽的。下面主要講一講?「Centos7下VSCode混合調(diào)試C/C++和Node.js工程」?。
本文以node.js開發(fā)Hello world addon為例
Node.js基于GYP(Generate Your Projects)構(gòu)建C/C++插件的工具是node-gyp,它可以將C++插件代碼編譯成.node文件,其實(shí)質(zhì)是一個(gè)動(dòng)態(tài)庫,可以自動(dòng)生成make、cmake工程對(duì)應(yīng)的Makefile和CMakeList.txt文件。
單獨(dú)調(diào)試C/C++代碼
launch.json文件如下:
這樣就可以在Start Debugging的時(shí)候,會(huì)依據(jù)launch.json執(zhí)行,當(dāng)給C++代碼標(biāo)記斷點(diǎn)后,程序運(yùn)行到斷點(diǎn)處就會(huì)停住。此時(shí)js代碼不處于調(diào)試狀態(tài)。另外使用lldb插件也可以起到相同的效果,不過需安裝lldb插件:

此時(shí)只需將type改為lldb即可。lldb是llvm的一個(gè)類似gdb的實(shí)現(xiàn)。這個(gè)插件是用來支持llvm編譯器的。
混合調(diào)試C/C++和Node.js
先啟動(dòng)Node.js工程開始調(diào)試后,接著啟動(dòng)C/C++調(diào)試器,Attach到相應(yīng)的進(jìn)程上,這樣在深入js代碼的同時(shí),還可以調(diào)試C++ Addons?[1]?部分的代碼,了解底層的調(diào)用邏輯。
launch.json文件如下:
配置中的第一項(xiàng)Launch是啟動(dòng)node.js代碼調(diào)試,調(diào)試JS代碼,需要先將Debugger面板切換到Launch。配置中的第二項(xiàng)是Attach C/C++ Addon,把Debug面板的Debugger切換到Attach C/C++ Addon,接著再啟動(dòng)即可。這里的request: "attach", 是讓lldb鏈接到nodejs進(jìn)程中去Debug,下面的pid字段就是啟動(dòng)后,會(huì)彈出下拉框,然后選擇要鏈接的進(jìn)程。一旦鏈接成功,就可以對(duì) C/C++ 代碼斷點(diǎn)了。
遇到的問題:
centos7下直接啟動(dòng)code,UI界面一片白,菜單和窗口都無法渲染
解決方法:?code --disable-gpu
默認(rèn)情況下code以啟動(dòng)gpu的方式去渲染,虛擬機(jī)下工作不正常,disable后正常工作。
安裝lldb插件,不能以安裝數(shù)排名安裝Native Debug,直接安裝CodeLLDB即可。
使用cppdb attach工作不正常,而且需要processId和program,修改成lldb和pid的方式后工作正常。
安裝lldb插件后報(bào)錯(cuò):

解決方法:
更新glib后依然遇到如下問題:

解決方法:?sudo yum install python3
好了,本篇文章就為大家介紹到這里,覺得內(nèi)容對(duì)你有用的話,記得支持一下喲!
如果你也喜歡編程,想好C/C++的話!如果你也想讓自己成為一個(gè)具有真材實(shí)料的厲害的程序員,不妨從現(xiàn)在開始!
微信公眾號(hào):C語言編程學(xué)習(xí)基地
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
