Visual Studio C++ 遠程調試

前言

在項目/產品開發過程中,BUG總是無處不在,幾乎不可避免,我想沒有人可以拍着胸脯說:本次上線百分百絕對無BUG。

如果BUG出現在項目開發週期內,則開發人員可以通過各種測試來發現定位BUG,並在自己的開發機(自己的臺式機或筆記本,部署了開發環境)上調試跟蹤、解決BUG,這是絕大部分開發人員都會經歷且熟練於心的一種解決BUG的方式。

還有一種情形:BUG出現在項目/產品上線後,該項目/產品安裝在世界各地的某個遙遠的位置,而且只有該位置的項目/產品出現BUG,這就無法使用第一種解決BUG的方式了,有幾個原因:
(1)如果BUG機的位置和開發人員的距離相距非常遠,則跨越數百公里去修復一個BUG是效率非常低的一種方式。遠程調試是更好的選擇。
(2)BUG機上沒有部署開發環境,比如安裝Visual Stdio,下載到部署一個開發環境要花1個小時左右,這有時候可能是無法接受的時間消耗。
(3)即使有充足的時間部署開發環境,開發人員的代碼大部分情況下我想都是屬於機密文檔,所以將代碼拷貝至BUG機調試就極有可能造成機密泄漏,得不償失。

如上所述,這種情形下,不拷貝代碼不部署開發環境的遠程調試方式將是不錯的選擇。也是本文所要介紹的主題。

準備

  1. 開發機部署Visual Stdio環境,這是對於開發人員輕車熟路的一步。本文的介紹都基於Visual Studio 2015環境。
  2. 有條件將開發機與調試機(BUG機)連接至同一個局域網,若無條件本文後面會介紹基於TeamView VPN的外網調試方法。
  3. 在開發機Visual Stdio安裝目錄找到遠程調試工具目錄。一般位置在C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger。
  4. 找到要調試模塊的.pdb文件,編譯生成的exe和dll都會帶有pdb文件。
  5. 開發機和調試機都安裝遠程通信工具如TeamView,便於開發人員在一端全操作。

Visual Stdio遠程調試步驟

  1. 將Remote Debugger對應版本(x64 & x86)的目錄拷貝至調試機,或者Remote Debugger整個目錄拷貝過去。目錄圖如下:
    在這裏插入圖片描述
  2. 將調試模塊的.pdb文件拷貝至調試機,放在需要調試的對象同級目錄下,比如要調試exe則放到和exe同級目錄下,要調試dll則放在和dll同級目錄下。
  3. 打開Remote Debugger對應的版本目錄(若調試的是64位程序或庫,則打開x64目錄,反之則打開x84目錄),找到遠程調試工具msvsmon.exe並點擊執行。第一次運行會出現對話框:
    在這裏插入圖片描述
    默認,點擊配置遠程調試。然後出現遠程調試工具面板:
    在這裏插入圖片描述
    點擊工具-選項,出現對話框,在身份驗證模式一欄,選擇無身份驗證,勾選允許任何用戶進行調試,點擊確定。
    在這裏插入圖片描述
    之後調試工具的面板會變成
    在這裏插入圖片描述
  4. 在查看調試機的IP地址,打開cmd控制檯面板,輸入命令ipconfig即可查看。
    在這裏插入圖片描述
    在這裏插入圖片描述
    在這裏插入圖片描述
    如果開發機和調試機在同一個有線局域網,則記錄其中的有線網IP地址;若兩者分屬不同的外網,則記錄與外部網絡連接的IP地址。
  5. 在開發機打開需要調試的工程,有兩種方式啓動調試:
    (1) 在調試機上啓動程序,在開發機上使用附加到進程的方式來調試。
    (2) 直接在開發機上通過調試菜單(F5)啓動調試。
    我們首先看第一種,一般算法庫調試經常會用到這種方式,即先啓動前端程序,再將算法庫工程附加到啓動的程序進程進行調試。操作步驟爲:
      1) 在Visual Stdio菜單點擊調試(Debug)-附加到進程(Attach to Process)
    在這裏插入圖片描述
      2) 在傳輸(Transport)一欄選擇遠程調試(Remote)方式,在限定符(Qualifier)一欄輸入調試機的IP地址,點擊右下角的Refresh
    在這裏插入圖片描述
      3) 如果開發機和調試機連接成功,則可用進程(Available Processes)表格中會出現調試機上運行的所有進程,找到需要調試的進程,選中,點擊右下角的Attach。
    在這裏插入圖片描述
    再來看第二種:在開發機上直接F5運行調試。
      1) 打開需要調試的工程屬性面板,在配置屬性欄點擊調試(Debugging)頁面,選擇遠程調試器,並按照圖示填入相關信息,點擊應用或確定。
    在這裏插入圖片描述
      2) 關閉屬性頁面,將調試器設置爲遠程調試器。
    在這裏插入圖片描述  3) 直接在Visual Studio頁面按F5啓動調試。

基於TeamView NPV的外網遠程調試

Visual Stdio的遠程調試模塊原則上只支持同一個局域網內的兩端調試,所以如果沒有使用特殊手段,是無法應用於兩端分屬不同外網的情況的。但是實際情況是,開發機和調試機在不同的外網的情況比比皆是。所以本文介紹基於TeamView NPV(爲跳過屏蔽,倒過來寫,請諒解)的外網遠程調試方法。

NPV是一種利用互聯網等公共網絡架設內網的網絡技術,能讓內網及其資源無縫覆蓋全球。它在主機和客戶端之間通過創建安全數據通訊通道或虛擬點對點訪問來實現專用網絡。建立連接後,設備之間數據的發送和接受將具有類似在同一個專用網絡中一樣的安全、功能和管理。

簡單來說,NPV可幫助我們將開發機和調試機放到同一個虛擬內網中,這樣就可以使用遠程調試工具了。具體方法爲:
在TeamView軟件中安裝NPV模塊:
選擇其他-選項
在這裏插入圖片描述
在高級標籤頁面,點擊顯示高級選項
在這裏插入圖片描述
拉到高級網絡設置欄,點擊安裝NPV驅動程序,我這裏已經安裝了,所以顯示的是卸載NPV,沒有安裝的機子顯示的是安裝NPV。
在這裏插入圖片描述
安裝後在主頁面選擇NPV,並連接遠程機。
在這裏插入圖片描述
連接成功後,會出現遠程機虛擬的IP地址,將該IP地址記錄下來,後面的操作就和內網的操作方式一樣了。需要注意的是,開發機和遠程機的TeamView都要安裝上NPV。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章