如何利用 VisualStudio2019 遠端工具進行偵錯

来源:https://www.cnblogs.com/KingJaja/archive/2019/07/26/11253427.html
-Advertisement-
Play Games

Hi 這次要來介紹 如何使用 Visual Studio 2019 遠端工具進行 Release 應用程式偵錯 首先我們先下載 2019 專用的遠端工具(這裡依照不同的 VisualStudio 版本要下載相對應的版本) 下載網址 (這裡我們選x64的版本) 安裝的部分十分簡單我們直接選擇安裝即可 ...


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

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

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

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

image

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

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

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

啟動後的畫面如下:

image

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

image

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

image

image

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

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

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

image

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

image

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

image

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

 

image

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

image

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

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

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

大家可以動手試試看唷!

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

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

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

image

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

image

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 好久沒有更新博客了,今天和大家分享一個關於emoji表情持久化問題,相信做web開發的都遇到過這樣的問題,因為我們知道mysql的utf-8字元集保存不了保存不了表情字元,這是為什麼呢?因為普通的字元串或者表情都是占位3個位元組,所以utf8足夠用了,但是移動端的表情符號占位是4個位元組,普通的utf8 ...
  • 周五更新很累。。。 堅持,年薪20萬又進了一步~~ python中的條件語句以【 if 】開頭,條件語句成立時,運行該代碼塊,如果條件不成立,則跳過該代碼塊,執行後面的代碼塊。 簡單的小示例: 輸入性別,進行簡單的判斷,用if語句實現代碼。 總結一下: 1、elif語句其實是 else if 的縮寫 ...
  • 9.14 線程Event connect線程執行到event.wait()時開始等待,直到check線程執行event.set()後立即繼續線程connect connect線程執行到event.wait(1)時開始等待1秒,count計數+1,如果到check線程執行event.set()前已經4 ...
  • T1 圓圈舞蹈 題目 【題目描述】 熊大媽的奶牛在時針的帶領下,圍成了一個圈跳舞。由於沒有嚴格的教育,奶牛們之間的間隔不一致。 奶牛想知道兩隻最遠的奶牛到底隔了多遠。奶牛A到B的距離為A順時針走和逆時針走,到達B的較短路程。 告訴你相鄰個奶牛間的距離,請你告訴奶牛兩隻最遠的奶牛到底隔了多遠。 【輸入 ...
  • 題目描述 尋找一個從頂點1所能到達的負環,負環定義為:一個邊權之和為負的環。 輸入格式 第一行一個正整數T表示數據組數,對於每組數據: 第一行兩個正整數N M,表示圖有N個頂點,M條邊 接下來M行,每行三個整數a b w,表示a b有一條權值為w的邊( 若w using namespace std; ...
  • 這回進行了人臉識別的項目,對學習過程進行記錄。 首先進行的就是一系列環境的配置,如 python3.7的安裝, python的IDE pycharm的安裝,然後進行opencv庫的安裝,可以通過pycharm中的settings->project->Project Interpreter 頁面進行添 ...
  • 初始編碼 ASCII最開始為7位,一共128字元。最後確定8位,一共256個字元,最左邊的為拓展位,為以後的開發做準備。 ASCII碼的最左邊的一位為0。 基本換算:8位(bit) = 1位元組(byte) 1024byte = 1 KB 1024KB = 1MB 1024MB = 1GB 1024G ...
  • 1.流程式控制制 break語句:1.結束其所在的迴圈,如果想結束外迴圈,加標記,break 標記 2.結束switch case選擇判斷語句 continue:結束某一次迴圈,直接進入下一次迴圈 (一般應用於for迴圈中,遇到continue則布直接跳到for迴圈的i++部分,結束當前迴圈,執行下一次 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...