Hi 這次要來介紹 如何使用 Visual Studio 2019 遠端工具進行 Release 應用程式偵錯

首先我們先下載 2019 專用的遠端工具(這裡依照不同的 VisualStudio 版本要下載相對應的版本)

下載網址 (這裡我們選x64的版本)

安裝的部分十分簡單我們直接選擇安裝即可

安裝完成後會發現在程式集多了 Remote Debugger 與 Remote Debugger Configuration Wizard 應用程式。其中 Remote Debugger Configuration Wizard

是用來設定遠端工具做為 Service 服務用的,另一個就是今天我們要介紹的 Remote Debugger 。

如果是一般使用者的話記得在執行 Remote Debugger 之bi 要用管理員的身分進行啟動

啟動後的畫面如下:

要注意的一點是,如果需要利用額外的帳號登入這台機器進行遠端偵錯的話,需要透過下圖的 Permissions 進行要使用的帳號新增

再來我們要先記一下遠端用來偵錯的 PORT 是多少。點選下圖紅框處的 Options 後,我們可以得到目前偵錯使用的 PORT 是 4024 (驗證的方式我們先不做修改)

當這隻程式開啟後,我們就可以利用 Visual Studio 2019 來進行對應的專案偵錯了!要特別注意的是要用來偵錯的專案版本必需跟遠端上佈署的版本一樣

接下來如何利用 Visual Studio 2019 遠端偵錯呢?

首先跟以前在本機偵錯 IIS 的做法很像。我們一樣選擇偵錯->附加至處理序

再輸入我們要偵錯目標主機的 IP 與 PORT後,勾選顯示所有使用者的處理序
最後再選擇 w3wp.exe 裡我們要偵錯的 Web 應用程式即可

這時候會發現,雖然 Visual Studio 有成功的進到專案偵錯模式了。但在下中斷點的時候是沒有任何作用的

這個原因其實是因為當使用遠端偵錯時,預設是不會載入專案相關 dll 偵錯符號的。但別緊張!我們可以手動進行載入。先從選單選擇偵錯->視窗->模組

這時候會發現列出了許多模組。仔細一看會發現我們專案名稱也在其中,而且
符號狀態是顯示已略過載符號。

這時候我們只需要確認我們專案 Release 資料夾中有該模組的 pdb 檔。
再直接右鍵點選載入符號。這時會看到符號狀態顯示為:已載入符號

這時回到我們原本下中斷點的地方,就會像以前在偵錯模式時下的實心中斷點了

並且在收到 Request 時,也能確實的進到中斷點

大家可以動手試試看唷!

PS. 在上圖各位應該有注意到有一些變數是顯示 : 「無法取得區域變數或引數的值,因為無法在這個指令指標使用,可能是它已經被最佳化改變了。」

這個問題其實很簡單,但我們佈署選擇 Release 模式時預設是會做程式碼最佳化的

而程式碼在做最佳化時,有些動作是將一些變數或方法做所謂的 inline 效果。也因為這樣我們在下中斷點時,雖然可以看到原始碼就在那,但在 Release 環境執行時,已經在不同位置了。如果覺得這樣很不方便的話,可以透過下圖的設定,將程式碼最佳化的效果取消掉

從下圖可以看到,如果我取消最佳化後,所有的中斷點都能正常進入,而且偵錯符號也會自動載入

以上就是這次如何用遠端工具進行偵錯。謝謝大家

如何利用 VisualStudio2019 遠端工具進行偵錯的更多相关文章

  1. 在 Windows 環境下利用 VNC 遠端控管 Mac OS X Server

    Mac OS Server 可以使用 VNC 來遠端控管.不過,在 Mac 上打開這個功能很簡單,要讓 Windows 的 VNC Viewer 連上卻很難,原來是有原因的. 首先我們來看怎麼在 Ma ...

  2. [心得] 如何利用liquibase進行資料庫版本控制 - 實際練習

    透過上一篇的基本觀念介紹,希望大家應該有一點點感覺了! 這篇我們就來做個簡單的版本演練,加深印象吧! 我使用的環境如下 System : Windows 7 Database : SQL Server ...

  3. [心得] 如何利用liquibase進行資料庫版本控制 - 基礎觀念

    前言 - 會寫這篇除了是要記錄一下使用的過程之外,也是發現到網路上找來的教學幾乎都是跟其它環境做結合 比較沒有單純利用command進行的流程.也沒有整體觀念的介紹,所以將我所理解的整理分享給大家. ...

  4. Ubuntu 14 設定 遠端連線,讓別台電腦可以連線進來

    Ubuntu 14 需 disable 加密,方可 遠端連線 此台電腦 xxx@xxx-ThinkPad-T460p:~$ gsettings set org.gnome.Vino require-e ...

  5. 【前端开发】利用Fiddler抓包工具进行本地调试

    解决什么问题: 解决前端在本地联调页面 || 样式 || 脚本时经常修改服务器代码,浪费太多时间. 避免多人同时修改代码产生冲突问题.可以在本地调完代码之后,再贴到服务器上. 其实这个问题老早就开始想 ...

  6. 利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比)

    利用Windows内置工具winsat测试硬盘速度(SSD&机械盘对比) 以下是红色内容是在命令行运行: C:\Users\Administrator>winsat diskWindow ...

  7. Dubbo管理端工具

    要得到dubbo的管理端工具其实很简单,只需要下面几步: 1.下载源码:我下载的是dubbo-dubbo-2.5.7.zip . 2.使用maven命令编译源码,得到war包: 将下载的dubbo-d ...

  8. <JVM下篇:性能监控与调优篇>01-概述篇-02-JVM监控及诊断工具-命令行篇

    笔记来源:尚硅谷JVM全套教程,百万播放,全网巅峰(宋红康详解java虚拟机) 同步更新:https://gitee.com/vectorx/NOTE_JVM https://codechina.cs ...

  9. 要做linux运维工程师的朋友,必须要掌握以下几个工具才行 ...

    要做linux运维工程师的朋友,必须要掌握以下几个工具才行 ...  [复制链接]   发表于 2013-12-13 15:59 | 来自  51CTO网页 [只看他] 楼主           本人 ...

随机推荐

  1. django接口文档自动生成

    django-rest_framework接口文档自动生成 只针对用到序列化和返序列化 一般还是用第三方yipi 一.安装依赖 pip3 install coreapi 二.设置 setting.py ...

  2. Python【day 15-2】基本数据类型-dict tuple set

    '''''' ''' 变量的数据类型 int str bool list 5.字典 dict 定义和写法:由{}表示,每个元素是key:value的键值对形式,元素间是逗号隔开 特点: 1.key是可 ...

  3. linux上文件挂载的案例

    cat /etc/fstab 将172.20.20.117上的172.20.20.117:/data/nfs/zichan/目录挂载到172.20.20.112机器上,其实类似目录共享 在需要挂载的机 ...

  4. 查找发布地图的 REST URL并查询相关信息

    1.登录ArcGIS Server Manager 2.登录后,里面是以前自己发布的地图服务 3.点击自己发布的地图,然后按下功能选项,再点击箭头来找到URL 4.点击进去,分别能从红圈中找到相关的信 ...

  5. /cygdrive/c/MinGW/bin/autoconf-2.68: line 501: /mingw/bin/autom4te-2.68: No such file or directory

    出现如下错误 编译openssh的时候 # autoconf /cygdrive/c/MinGW/bin/autoconf-2.68: line 501: /mingw/bin/autom4te-2. ...

  6. python如何拼接时间戳到写入的文件名中

    问题描述: 记录一下拼接文件名时间戳的过程,回顾下可能的问题所在,希望能帮到同样碰到这类问题的兄dei. 进行单元测试时,最后使用HTMLTestRunner生成的HTML分析报告,需要添加一个时间戳 ...

  7. ckeditor4.7配置图片上传

    ckeditor作为老牌的优秀在线编辑器,一直受到开发者的青睐. 这里我们讲解下 ckeditor最新版本4.7的图片上传配置. https://ckeditor.com/ 官方 进入下载 https ...

  8. 14.Java基础_函数/函数重载/参数传递

    Java函数和函数重载 /* 函数定义: public static 返回类型 func(参数){ 方法体: } 函数重载 在调用时,Java虚拟机会通过参数的不同来区分同名的函数 满足: 1.多个函 ...

  9. vue调用高德地图:vue-amap

    前言:之前没有接触过页面调用地图的项目,某次面试,老板要求我用vue-amap调用高德地图,回家以后,我去网上查了一些案例和教程,看似很简单的引入调用,我却整整弄了一宿,还没弄出来!!!百般无奈之下, ...

  10. Html学习之十五(盒模型)

    Web页面中的每一个元素都是一个盒模型,CSS中使用盒模型来描述一个元素.CSS盒子模型又称框模型,它包含四个边界,分别是外边距边界(Margin).边框边界(border).内边距边界(paddin ...