vs2017除錯Linux程式

W_Z_C發表於2017-09-28

1. 前言

vs2017釋出算是一個重大革新,內部支援Linux程式開發,也是微軟擁抱開源的又一大動作。vs中Linux開發需要有一個可以執行Linux系統,並且需要安裝開發環境和除錯環境,真正的編譯執行時在Linux系統中執行的。編譯的時候,vs會自動將程式碼複製到目標機器的~/projects/[project-name]目錄下,除錯的時候說直白的就是gdb的遠端除錯,方便的地方只是將除錯過程整合進IDE呼叫。

vs2017安裝
vs2017安裝

2. WSL

WSL是不久前的windows10特性,目前還在Beta版本,是windows下的一個Ubuntu分支,對於vs2017的Linux開發能夠提供方便,無需在另行安裝虛擬機器,因為目前是測試版本,所以可能會出現一些bug。

開啟WSL功能,需要進入[程式和功能]模組,點選啟動或關閉Windows功能按鈕。

WSL開啟
WSL開啟

開啟功能後,其實Linux系統還沒有部署安裝,需要在命令列中執行bash命令安裝。

bash命令
bash命令

或者:

1. Win + X,接著點選或按 A 進入powershell。
2. 安裝 WSL:lxrun /install
3. 解除安裝 WSL:lxrun /uninstall /full複製程式碼

3. 配置Linux

3.1 安裝配置

更新源和軟體

sudo apt-get update
sudo apt-get upgrade複製程式碼

重灌openssh

sudo apt-get remove openssh-server
sudo apt-get install openssh-server複製程式碼

開啟配置檔案

sudo vim /etc/ssh/sshd_config複製程式碼

設定選項

AllowUsers yourusername
PasswordAuthentication=yes複製程式碼

重啟sshd

sudo service ssh --full-restart複製程式碼

安裝開發套件

sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install gdb
sudo apt-get install gdbserver複製程式碼

3.2 常見錯誤

1. 如果你安裝了虛擬機器、VPN之類的軟體,啟動的時候可能會導致sshd錯誤。

 * Stopping OpenBSD Secure Shell server sshd                                                  [ OK ]
 * Starting OpenBSD Secure Shell server sshd                                                         sshd: ../sysdeps/posix/getaddrinfo.c:2603: getaddrinfo: Assertion `IN6_IS_ADDR_V4MAPPED (sin6->sin6_addr.s6_addr32)' failed.
Aborted (core dumped)
                                                                                              [fail]複製程式碼

結果如下圖:

sshd啟動錯誤
sshd啟動錯誤

解決方法只需在sshd_config檔案新增一個ListenAddress 0.0.0.0配置項即可。

參考這個:sshd fail because getaddrinfo

2. 除了上面的錯誤,還可能會發生啟動正常,確沒法訪問的錯誤。

發生錯誤後,檢視windows下是22埠是否開啟:

C:\>netstat -a -q -n | findstr ":22"
  TCP    0.0.0.0:22             0.0.0.0:0              BOUND複製程式碼

結果顯示繫結成功,卻沒有正常監聽。查詢各種解決方案,發現第三方軟體導致的,國內的可能是騰訊TGP遊戲平臺,解除安裝後重啟電腦。

參考這個:Unable to open any PORT in bash

然後重新開啟bash,啟動ssh(關閉bash相當於關閉linux)。在windows下檢視:

C:\>netstat -a -q -n | findstr ":22"
  TCP    0.0.0.0:22             0.0.0.0:0              LISTENING複製程式碼

圓滿解決。使用ssh可以正常訪問WSL了。

4. 建立專案

開啟vs2017,新建控制檯程式。

建立控制檯程式
建立控制檯程式

首次建立工程,會有一個詳細的readme幫助文件。

readme文件
readme文件

點選執行按鈕,彈出Linux配置選項。

Linux配置
Linux配置

預設沒有任何輸出,需要開啟[除錯]->[Liunx控制檯視窗]檢視資訊。

vs2017 Liunx除錯
vs2017 Liunx除錯

簡單的程式目前應該沒有問題,至於複雜的或者介面程式還沒有測試過。並且WSL目前只支援64位系統,如果真的需要在vs2017中開發Liunx程式,WSL或許不是一個很好的選擇。

相關文章