vs生成linux服务器程序,从Visual Studio到Linux上调试C++代码
從Visual Studio到Linux上調(diào)試C++代碼
04/30/2015
5 分鐘可看完
本文內(nèi)容
[原文發(fā)表時(shí)間] 2015/4/29 10:00 PM
正如您可能已經(jīng)聽(tīng)說(shuō)的那樣,Visual Studio 2015新推出了對(duì)Android開(kāi)發(fā)的GDB支持。有趣的是,因?yàn)檫@項(xiàng)功能依賴GDB調(diào)試,我們完全可能稍加改動(dòng)就實(shí)現(xiàn)針對(duì)其他同樣支持GDB的平臺(tái)(如Linux和Raspberry Pi)做代碼調(diào)試。在這篇博客中我將會(huì)分享在Linux,Raspberry Pi上遠(yuǎn)程調(diào)試C++代碼的步驟。
因?yàn)檫@套方法是我在最初專門(mén)為Android設(shè)計(jì)的實(shí)施上修改得來(lái),它有一定的局限性,但是它顯示了這項(xiàng)功能的潛力。這是我們?yōu)槭裁磳?duì)GDB實(shí)施開(kāi)源的一個(gè)很好的例子。還請(qǐng)注意這不是一個(gè)交叉編譯方案。您需要在Visual Studio中編輯源碼,再拿到Linux機(jī)器去編譯。一旦配置好了之后,您就可以觸發(fā)斷點(diǎn)以及逐行調(diào)試源代碼,除了對(duì)SSH連接做正確的設(shè)置以外不需要其他附加工作。
以下是步驟
下載Visual Studio 2015 RC。安裝類型中,選擇自定義安裝,并且選中交叉平臺(tái)手機(jī)開(kāi)發(fā)下面的Visual C++手機(jī)開(kāi)發(fā)。
從Putty下載站點(diǎn)中下載plink,putty,pscp和puttygen。
設(shè)置SSH連接到您的Linux安裝使用證書(shū)身份驗(yàn)證。關(guān)于此項(xiàng)的一個(gè)不錯(cuò)的概覽是在Azure上鏈接Linux的SSH使用指南。這些指南總體上足夠涵蓋從Windows連接到任何Linux機(jī)器,而不僅僅是那些運(yùn)行Azure的機(jī)器。
通過(guò)Putty從您的Windows機(jī)器連接到Linux機(jī)器。系統(tǒng)將提示您的服務(wù)器主機(jī)密鑰不在注冊(cè)表中。選擇yes以將其添加到注冊(cè)表以使得主機(jī)受信。如果您不這樣做,您將在后面得到一個(gè)錯(cuò)誤提示,但它并不能清晰地指明問(wèn)題所在。
您需調(diào)試的代碼要放在本地機(jī)的C++ Makefile 工程項(xiàng)目里。
您將需要?jiǎng)?chuàng)建一個(gè)xml配置文件用來(lái)指定plink在哪兒,您的連接信息,在遠(yuǎn)程機(jī)器上的exe文件地址以啟動(dòng)GDB。以下是一個(gè)示例。
PipePath="plink.exe" PipeArguments="-i private.ppk user@server -batch -t gdb --interpreter=mi"
ExePath="/home/user/YourDir/exe" ExeArguments=""
TargetArchitecture="X64" WorkingDirectory="/home/user/YourDir" AdditionalSOLibSearchPath="">
7. 打開(kāi)命令提示符窗口,在Visual Studio菜單中選擇視圖->其他窗口->命令提示符窗口。
8. 通過(guò)以下命令傳遞您的配置文件:
Debug.GDBLaunch /OptionsFile:[path] /Executable:foo
9. 享受在Linux上用VS2015遠(yuǎn)程調(diào)試您的C++程序吧!
如果您想讓事情更加簡(jiǎn)單,在第5步您可以在Makefile項(xiàng)目中指定以下命令為構(gòu)建命令。
遠(yuǎn)程復(fù)制您的文件:
pscp.exe -i private.ppk -r YourDir user@server:/home/user
遠(yuǎn)程編譯:
plink.exe user@server -i private.ppk "cd ~/YourDir; g++ -g yourcode.cpp -o yourexecutable"
鑒于我上述的僅僅是對(duì)未來(lái)的預(yù)覽,以下是一些已知問(wèn)題:
在開(kāi)始以上的第8步后你將遇到一個(gè)錯(cuò)誤信息,“無(wú)定義命令gdb”。一旦連接建立,我們的調(diào)試引擎試圖開(kāi)始gdb,但是我們已經(jīng)通過(guò)配置文件參數(shù)開(kāi)始了調(diào)試。如果我們不是以這樣的方式開(kāi)始,就不能正確建立起到GDB的連接,并且將孤立的gdb進(jìn)程遺留在目的機(jī)上。
即使您在上面建立斷點(diǎn),進(jìn)入Main函數(shù)后的第一個(gè)代碼語(yǔ)句總會(huì)錯(cuò)過(guò)。
無(wú)需輸入可執(zhí)行文件的執(zhí)行參數(shù),因?yàn)閳?zhí)行參數(shù)應(yīng)該已經(jīng)包含在選項(xiàng)文件中了,所以即使輸入也不會(huì)被使用。
由于不支持交叉編譯您需要把您的工具鏈和gdb安裝在Linux目標(biāo)機(jī)上。
如果您感覺(jué)這篇博客很有用或者您在使用中遇到任何問(wèn)題,請(qǐng)?jiān)谙旅嬖u(píng)論讓我們知道。我們也歡迎任何有助于提升的建議。
總結(jié)
以上是生活随笔為你收集整理的vs生成linux服务器程序,从Visual Studio到Linux上调试C++代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python—while循环、字符串
- 下一篇: linux 其他常用命令