VisualStudio 使用 FastTunnel 輔助搭建遠程調試環境

有時候需要遠程調試一些用戶問題,期望能使用本機的 Visual Studio 開發環境,調試遠程的用戶的設備上的應用。這時會遇到的一個問題是如何讓本機的 Visual Studio 可以連接上遠程的用戶的設備,從而進行調試。本文將告訴大家如何采用 FastTunnel 工具,讓本機的 Visual Studio 和遠程的用戶的設備建立調試聯系,搭建遠程調試環境,從而支持遠程調試

開始之前需要先介紹一下 FastTunnel 工具,這是一款高性能跨平臺內網穿透工具,使用它可以實現將內網服務暴露到公網供自己或任何人訪問。對比市面上的其他內網穿透工具最大優勢在于基于 dotnet 編寫,提供二次開發擴展能力。本文將來告訴大家,在不做任何編程的情況下,通過 FastTunnel 工具,搭建遠程調試環境

開始之前需要要求開發者有一臺可公網訪問的服務器,用來作為中繼。現在的開發者,誰還沒有幾臺公網服務器,是在不行,那就掏錢上騰訊云(騰訊,打錢)吧

本文的演示需要三臺計算機設備,其中一臺是服務器,服務器擁有公網 ip 地址。如騰訊云的服務器。不挑服務器的系統,基于 dotnet 的 FastTunnel 輕松做到了在各個系統平臺上運行

另外兩臺分別是開發設備,和用戶設備

咱期望做的就是在開發設備上可以讓開發設備的 Visual Studio 開發環境可以連接上用戶設備進行調試

7142aa11a551cd0acb5083e3c8f1978d.jpeg

開始之前,先從?https://github.com/FastTunnel/FastTunnel/releases?下載最新的版本。需要下載一個客戶端版本和一個服務端版本,其中服務端版本將放在服務器上運行,客戶端版本放在用戶設備上運行,開發設備上啥都不需要

當前是 2022.10 最新版本是 2.1.1 版本

先進行服務端的部署

部署服務端的方法是先將下載下來的 FastTunnel.Server 進行解壓縮,下載的時候自己注意一下對應的系統版本,如 Windows 的就應該下載 Windows 的,是 Linux 的服務器就應該下載 Linux 的。但愿我的讀者不會這么傻

接著打開 config 文件夾,編輯里面的?appsettings.json?文件。這個文件里面寫滿了注釋,相信大家看著注釋就知道是怎么回事。核心關注的就是開發的連接端口。不清楚的話,自己去加 FastTunnel 群問qq群:935214348

完成配置之后,運行 FastTunnel.Server 應用

接下來即可進行客戶端的配置

推薦先在本地寫好配置,再將整個 FastTunnel.Client 壓縮給到用戶設備。因為用戶設備上大部分沒啥好用的編輯工具。另外考慮到現在還有很多用戶都使用 x86 系統,推薦先使用 x86 版本的 FastTunnel.Client 客戶端應用

編輯 FastTunnel.Client 的?appsettings.json?文件,填寫注釋里寫了必選的 ServerAddr 和 ServerPort 屬性,這兩個屬性需要和服務端配置已知。接著可選填寫 Token 信息,如果你的服務端有更改的話,那這里需要同步更改。接著在端口轉發這里進行編輯,這就是本文的重點,也是進行遠程調試的重點

在 Forwards 屬性里面,填寫本機的遠程調試開放端口,這個開放端口現在還不能完全確定,可以在客戶端開啟遠程調試的時候,動態更改。這里先在 LocalPort 寫入我喜歡的 60123 端口當成遠程調試開放端口。接著編輯 RemotePort 屬性,設置在服務器上開放哪個端口進行對應,我這里選用 1275 作為端口。也就是說訪問服務器的 1275 端口,將轉發到客戶端的 60123 端口上

這里有一點需要注意的是,開放的服務器端口,需要服務器的端口可以被開放。例如上文寫了將本地的 60123 端口,映射到服務器的 1275 端口上,這就要求服務器的 1275 端口是防火墻允許的端口,不能被防火墻攔截

我的配置的內容代碼如下

{"Logging":?{"LogLevel":?{//?Trace?Debug?Information?Warning?Error"Default":?"Information","Microsoft":?"Warning","Microsoft.Hosting.Lifetime":?"Information"}},//?是否啟用文件日志輸出"EnableFileLog":?true,"ClientSettings":?{"Server":?{//?[必選]?服務端ip/域名(來自服務端配置文件的urls參數)?以下是我的服務器,還請換成你自己的"ServerAddr":?"debug.lindexi.com",//?[必選]?服務端監聽的通信端口(來自服務端配置文件的urls參數)"ServerPort":?1270},/***?[可選]?端口轉發?通過專用端口代理,不需要有自己的域名*?可穿透所有TCP上層協議*?遠程linux示例:#ssh?-oPort=12701?{root}@{ServerAddr}?ServerAddr?填入服務端ip,root對應內網用戶名*?通過服務端返回的訪問方式進行訪問即可*/"Forwards":?[{//?[必選]?內網服務所在主機ip"LocalIp":?"127.0.0.1",//?[必選]?內網服務監聽端口?這就是我的遠程調試端口"LocalPort":?60123,//?[必選]?服務端端口?訪問?服務端ip:1274?即可轉發到遠程調試"RemotePort":?1275,//?[可選]?通訊協議,可選值TCP,UDP,默認值TCP 。遠程調試必須選用 TCP 方式"Protocol":?"TCP"}]}
}

完成了配置文件編寫之后,將整個 FastTunnel.Client 拷貝到用戶端,運行 FastTunnel.Client 應用

預期是能看到大概如下的控制臺界面輸出內容

[15:34:49?INF]?=====?FastTunnel?Client?Start?=====
[15:34:49?INF]?正在連接服務端?172.20.114.51:1270
[15:34:49?INF]?Application?started.?Press?Ctrl+C?to?shut?down.
[15:34:49?INF]?Hosting?environment:?Production
[15:34:49?INF]?Content?root?path:?D:\lindexi\FastTunnel.Client.win-x86
[15:35:05?INF]?穿透協議?|?映射關系(公網=>內網)
[15:35:05?INF]???TCP????|?test.cc:1275?=>?127.0.0.1:60123

接著拷貝 Visual Studio 遠程調試工具到用戶設備上,可以將本機的 Visual Studio 遠程調試工具文件夾拷貝過去。對于 Visual Studio 2022 來說,本機的遠程調試工具文件夾默認放在?C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\IDE\Remote Debugger?文件夾里面。其他版本的,請參閱?Remote debugging - Visual Studio (Windows) 官方文檔?了解存放的文件夾

將 Remote Debugger 文件夾拷貝到用戶設備上。然后根據所要調試的應用的是 x86 的還是 x64 的等,運行對應文件夾下的 msvsmon.exe 文件。當然,如果明確只需要調試 x86 應用程序,那也只需要拷貝 Remote Debugger 文件夾里面的 x86 文件夾即可

打開 msvsmon.exe 文件,打開之后進行一些配置,對于用戶的設備上來說,快速的調試可以選用不安全的方式,也就是沒有帶用戶權限的方式進行調試,這樣的調試就不需要登錄用戶設備的用戶賬戶,比較方便

點擊工具選項,進行選項設置。先修改遠程調試開放端口號,如上文,上文使用的是 60123 端口,于是這里需要修改為 60123 端口。接著選擇不安全的?無身份驗證?和勾選允許任何用戶進行調試選項,如下圖

723b4a9687aabc66e277c01f78fc4eb5.jpeg

這個勾選?無身份驗證?是比較危險的,記得調試完成要幫用戶關閉 msvsmon.exe 應用。因為這就意味著任何能訪問到用戶設備遠程調試端口的人都可以掛上調試,而掛上了調試了,還有啥不能做的。這也是我為什么不使用默認的遠程調試端口的原因

完成配置之后,點擊確認,可以看到 msvsmon 輸出了啟動成功

回到自己的開發設備上,開始打開 VisualStudio 進行遠程調試

點擊 調試->附加到進程

先選擇連接類型為 遠程 的方式。由于采用的是非內網的調試,不要選擇默認的方式,默認的方式基本上是找不到的

ac64adbcd6536e21f6e763d7396353d1.jpeg

在連接目標里面輸入服務器的地址和映射遠程調試的端口,例如我的配置是?debug.lindexi.com:1275?的,界面如下

87edd977215baba8011cb604835886e7.jpeg

輸入完成之后,按下回車。如果成功的話,就可以看到列出用戶設備上所有能被調試的進程

97d14ac5f6aaf932b969e2aceba6dc6d.jpeg

選擇感興趣的進程,即可開始調試

更多請看?FastTunnel-開源內網穿透框架 - gui.h - 博客園

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281666.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281666.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281666.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

深入理解null的原理

--null的原理 --oracle一直將null和空字符串’’<長度為0>同等對待<如’’ is null是true,’’null為false,如果聲明a varchar2:’’,那么a is null為true,a’’為false>--1.null的運算 --算術表達式和null 運算總為null,實際上所有的操作符除了||連接操作符外&…

阻止中文輸入法輸入拼音的時候觸發input事件

阻止中文輸入法輸入拼音的時候觸發input事件 前言 最近看element-ui源碼的時候看到el-input發現的。這個少見的事件。 compositionstart、compositionend事件&#xff08;MDN解釋) compositionstart事件觸發于一段文字的輸入之前&#xff08;類似于 keydown 事件&#xff0c;但…

Python1

python介紹python是一種解釋型的&#xff0c;面對對象的。帶有動態語義的高級程序設計語言python簡史1989年,Guido(龜叔)為ABC 語言寫的一個插件。因Monty Python的喜劇團體的原因,故給這個語言起名為python。linux也是1989年誕生的,1991年正式發布linux1.0內核;1990年, 發布py…

ncut算法matlab實現,ncut_multiscale_1_6 經典的圖像分割算法 的Matlab代碼。 238萬源代碼下載- www.pudn.com...

文件名稱: ncut_multiscale_1_6下載收藏√ [5 4 3 2 1 ]開發工具: matlab文件大小: 587 KB上傳時間: 2015-04-17下載次數: 4提 供 者: HH詳細說明&#xff1a;經典的圖像分割算法NCut的Matlab代碼。-Matlab code of classic image segmentation algorithm NCut .文件列表(…

使用.NET從零實現基于用戶角色的訪問權限控制

使用.NET從零實現基于用戶角色的訪問權限控制本文將介紹如何實現一個基于.NET RBAC 權限管理系統&#xff0c;如果您不想了解原理&#xff0c;可查看推送的另一篇文章關于Sang.AspNetCore.RoleBasedAuthorization[1] 庫是使用介紹&#xff0c;直接使用該庫即可。背景在設計系統…

數據歸一化

數據歸一化 數據的標準化是將數據按比例縮放&#xff0c;使之落入一個小的特定區間&#xff0c;一般為0到1之間。在某些比較和評價的指標處理中經常會用到&#xff0c;去除數據的單位限制&#xff0c;將其轉化為無量綱的純數值&#xff0c;便于不同單位或量級的指標能夠進行比較…

vi is failed with error E382: Cannot write, 'buftype' option is set in Linux

在linux下生成jar文件遇到了編碼問題&#xff0c;于是想vi t.jar&#xff0c;在保存是報錯&#xff1a;E382: Cannot write, buftype option is set 解決方法&#xff1a; 可以用下面的命名查看buftype的設置&#xff0c;當buftypenofile時&#xff0c;不能保存文件&#xff0c…

列表生成式的使用

輸入&#xff1a;[Hello, World, 18, Apple, None] 輸出&#xff1a;[hello, world, apple] L [Hello, World, 18, Apple, None] print([w.lower() for w in L if isinstance(w, str)])# -- coding: utf-8 -- L [Hello, World, 18, Apple, None] L2 [] L2 [w.lower() for w…

matlab 12位 顯示不出來,求助大神,為何不同機器運行MATLAB結果不同

求助&#xff1a;不同機器運行MATLAB結果不同我調用MATLAB優化工具箱的庫函數fmincon&#xff0c;使用相同的初始解(可行解)&#xff0c;對同一個問題進行局部搜索(算法為序列二次規劃&#xff0c;即SQP)&#xff0c;但在不同機器上得到的結果不同。一共有五臺機器 (為了方便&a…

.NET性能系列文章一:.NET7的性能改進

這些方法在.NET7 中變得更快照片來自 CHUTTERSNAP[1] 的 Unsplash[2]歡迎閱讀.NET 性能系列的第一章。這一系列的特點是對.NET 世界中許多不同的主題進行研究、比較性能。正如標題所說的那樣&#xff0c;本章節在于.NET7 中的性能改進。你將看到哪種方法是實現特定功能最快的方…

UVA - 10061 How many zero#39;s and how many digits ?

n!x*b^y, 當x為正整數時,最大的y就是n!末尾0的個數了, 把n,b分別拆成素因子相乘的形式: 比如, n5,b16 n5,b2^4, 非常明顯,末尾0的個數為0 10進制時,n!a*10^x b進制時,n!c*b^y 非常明顯,n!的位數就是最大的x1 這里計算我用了log,精度設置為1e-9 #include<iostream> #inclu…

丁洪波 -- 不要“ 總是拿著微不足道的成就來騙自己”

都市快報實盤大賽25期&#xff1a;于海飛/丁洪波榮獲冠亞軍 七禾網 時間&#xff1a;2010-11-02 12:47:05 來源&#xff1a;期貨中國10月30日下午&#xff0c;2010年浙商期貨實盤大賽第三季度&#xff08;都市快報實盤大賽第25期&#xff09;頒獎典禮在天科大廈浙商期貨大會議室…

面試專題(Mysql及Mongodb)

2019獨角獸企業重金招聘Python工程師標準>>> mysql面試題 1. 各個數據庫存儲引擎區別 mysql的存儲引擎是針對表進行設置的&#xff0c;一個庫的不同表可以設置不同的存儲引擎&#xff0c;mysql默認支持多種存儲引擎&#xff0c;以適用不同領域的數據庫應用需要&…

織夢網站翻頁php,dedecms織夢網站列表頁和內容頁分頁樣式

織夢分頁標簽{dede:pagelist istitem"index,pre,next,end,option,info," listsize"5"/}&#xff0c;{dede:prenext getpre/}&#xff0c;{dede:prenext getnext/}。默認樣式和使用模板css樣式布局不一樣,這時又不想重寫樣式&#xff0c;我們可以修改織夢標…

通過中間件添加用戶的Claim

本文主要介紹 Sang.AspNetCore.RoleBasedAuthorization[1] 庫如何通過中間件實現對用戶 Claim 的添加。背景前面我們介紹了通過對自定義授權策略和自定義授權處理程序的使用實現了基本的RBAC權限設計&#xff0c;將大量的用戶可訪問資源及操作的標識直接放到用戶的 JWT Token 中…

部署也是工程的一部分,也要編程(自動化)

部署和開發一樣&#xff0c;同樣面臨變化。同樣有復雜的細節。 同樣應該代碼化&#xff0c;自動化。把復雜性、思路&#xff0c;操作&#xff0c;都固化下來&#xff0c;顯式表達。 不要“雪花”式配置。 把最近看的文章摘抄一下 集句&#xff1a; 1頻繁做讓你感到痛苦的事情&a…

KDD走進阿里 數百專家聚集探討產學研一體化

6月29日&#xff0c;由阿里巴巴集團、中國中文信息學會、KDD China聯合主辦的數據挖掘前沿發展與未來論壇在杭州舉行&#xff0c;會議吸引了來自國際頂級高校和知名企業的近300名專家學者到場參會、近30000人在線觀看。論壇除了分享最新的數據挖掘領域最新科研成果及研發思路外…

zookeeper學習03 使用場景

zookeeper實際應用場景 zookeeper能夠實現哪些場景 1&#xff09;訂閱發布/配置中心 watcher機制 統一配置管理&#xff08;disconf&#xff09; 實現配置信息的集中式原理和數據的動態更新 實現配置中心有倆種模式&#xff1a;push,pull 長輪詢 zookeeper采用的是推拉相結合的…

php模板引擎循環start,PHP模板引擎Smarty內建函數section,sectionelse用法詳解

本文實例講述了PHP模板引擎Smarty內建函數section,sectionelse用法。分享給大家供大家參考&#xff0c;具體如下&#xff1a;section 是 Smarty 模板中除了 foreach 以外的另一種處理循環的方案&#xff0c;section 比 foreach 要靈活&#xff0c;就像是一個改進的 foreach 語句…

OpenHarmony操作系統與龍芯2K1000LA芯片完成適配,龍架構平臺獲得開源鴻蒙認證

近日&#xff0c;龍芯中科與軟通動力控股公司鴻湖萬聯共同完成OpenHarmony操作系統與龍芯2K1000LA處理器的適配&#xff0c;“乘風1000”開發板&#xff08;搭載龍芯2K1000LA&#xff09;榮獲OpenHarmony生態產品兼容性證書。至此&#xff0c;萬物互聯的OpenHarmony生態體系再次…