5

首先我要說,我可以遠程調試釋放構建遠程計算機上。我set up my release build非常像我的調試版本,但我大多不得不確保調試標誌沒有設置。我已經處理了一段時間,最終決定嘗試找出爲什麼我必須經歷這個。我還應該提到,我的遠程調試經驗僅限於此項目,並且C#程序使用C++/CLI(使用/ clr).DLL編譯來調解某些關鍵的C++庫。我不需要調試底層的C++庫,但我需要調試C++/CLI代碼。 (我提到的一個原因是我不能在使用/ clr標誌時靜態鏈接庫)。遠程調試與CRT的調試版本的應用程序時,在遠程機器上沒有安裝VS

我最近發現Dependency Walker,所以我用它來看看發生了什麼。調試標誌集,鏈接器鏈接在MSVCR100D.DLL和MSVCP100D.DLL中,當標誌未設置時,它使用沒有「D」後綴的文件。現在通常我可能會將這些.DLL的版本複製到遠程計算機,但是存在問題。 VS2010的我的開發筆記本電腦是64位機器,目標機器是32位。這意味着我擁有的這些DLL的唯一版本是64位。我已經在遠程機器上安裝了VS2010的遠程調試(我在2008年有這個問題),但它不包括這些.DLL的調試版本(我不知道爲什麼,但我假設這是通過設計)。所以我的問題是:

  1. 作爲VS2010的註冊擁有者,是否有可用於遠程計算機的這些.DLL的32位版本的有效來源?
  2. 有沒有更簡單的方法讓我獲得調試支持?那是我可以改變一些其他的設置,告訴VS不使用這兩個DLL的調試版本嗎?這裏的優點是將設置DEBUG符號,並使用它的任何條件代碼都可以工作。

回答

8

CRT DLL的調試版本都可用於標準Visual Studio安裝,包括即使在64位機器上的x86版本。

默認情況下,他們在位於以下路徑:

<Program Files folder>\Microsoft Visual Studio 10.0\VC\redist\Debug_NonRedist 

該文件夾下,你會發現,含有這些DLL的調試版本對應的兩個附加的文件夾(x64x86)平臺。

但要特別注意的文件夾(Debug_NonRedist)的名稱。這表明這些調試DLL是不可再分發。這當然是OK了誰擁有許可證VS到另一臺機器上測試他/她的代碼時使用它們的開發商,但他們應該分發到客戶機和用於運行應用程序。 (聽起來像是你的問題,你知道這一點,但值得指出的,無論如何,未來的Google。)


或者,你可以改變它的CRT的DLL版本的Visual Studio項目鏈接到特定項目配置。這意味着,你可以編譯你的應用程序的「調試」版本,但告訴Visual Studio中鏈接到CRT的全部可重新發布版本。

爲了做到這一點:

  1. 在解決方案資源管理器中右鍵單擊並選擇「屬性」。

  2. 確保「調試」配置在對話框的頂部的下拉框中選擇。

  3. 展開 「C/C++」 在TreeView項目,並選擇 「代碼生成」。

  4. 改變「運行時庫」選項的設置要麼「多線程的DLL(/ MD)」或「多線程(/ MT)」。

    注意這裏,你只是告訴Visual Studio中使用每個選項的「調試」的變種。他們仍然意味着同樣的事情。第一個將動態鏈接到DLL,第二個將靜態鏈接CRT到您的應用程序。選擇一個最適合你的情況。 (我經常發現它方便的配置我的「調試」建立靜態準確鏈接以這樣的實例。)

+0

1K表達謝意。我覺得有點像一個白癡,因爲沒有注意到運行時庫選項(因爲我使用非常彈出來嘗試MT選項)。奇怪的隧道視覺失明我猜。我選擇將非redist版本放在遠程機器上的調試文件夾中。在我將機器運送給客戶之前,該文件夾將被刪除,我將留在MS的良好聲譽。 – Tod

+0

@Tod:當然;別客氣。這就是這個網站的目的,真的。這聽起來像是一個很好的解決方案;我已經在靜態鏈接無法工作的項目上做到這一點。 (我只注意到我錯過了你的問題,你解釋爲什麼你不能靜態鏈接的一部分。) –

0

這個問題是一個老版本的Visual Studio,但如果任何人來到這裏是爲了獲得更新的版本(就像我做的那樣),有內置的支持來部署您在VS 2013(或許更早)中需要的調試DLL。這是一個顯而易見的設置,但是如果一個人衝過來(如我一樣),很容易就會錯過。所以也許這會幫助別人。

在屬性頁,下Debugging,當Debugger to launch設置爲Remote Windows Debugger,在屬性列表中,有一個名爲Deploy Visual C++ Debug Runtime Libraries的選項。只需將其設置爲Yes即可。

更新 - 的要求,這是澄清我指其屬性頁,由如何訪問它們的方法:在Solution Explorer中,右鍵單擊啓動項目(一個粗體) ,然後在上下文菜單上單擊「屬性」。出現屬性頁窗口。在左側的面板中,展開配置屬性,然後選擇調試,第二項配置屬性

編輯爲更新:我通過通知來到這裏,並沒有看到我可以剛剛說過,「看到科迪格雷對窗口圖片的回答」,以滿足澄清請求。但是,無論如何,如果有人需要它,還有一些方法。

+0

你可以提出更具體的?哪些屬性頁面準確? – skyline75489

+0

已更新。該窗口稱爲** <項目名稱>屬性頁面**,這可能不是所有描述性的,所以我列出瞭如何訪問該窗口。 – McMustard