2010-07-27 64 views
2

我是一個專業的軟件公司工作。在我以前的公司基本上我正在研究C &關於unix的C++。現在我突然轉向Windows上的C++,感覺像我我在一個完全不同的世界。基本上我正在研究一個非常大的應用程序,它完全用C++編寫。爲了簡單起見,我沒有源代碼。我有應用程序的exe文件和其他一些依賴文件。一個GUI應用程序(幾個窗口,報告,圖形和巨大的數學計算是由這個應用程序完成)。現在我終於有應用程序的源代碼,其中包括一些頭文件,一些vcproj文件,一些dsw文件和其他幾個我甚至不甚至明白爲什麼他們在場。 現在,作爲我的C++程序員,我的責任是讓客戶端識別出的所有BUG複製並修復它們。C++從Unix轉移到Windows的視覺工作室

如果它在Unix上的一個錯誤,我可以簡單地使用二進制和源代碼並運行gdb/dbx,並以某種方式找出問題,如添加一些printf語句。

但是,鑑於我上面提到的文件,可能會在VISUAL STUDIO中的VC++中調試應用程序。 C++程序員是否很難從Unix轉移到Windows。 是否有任何好的資源,我可以參考這種改變,我可以很快把握事情?

給出的exe文件和應用程序如何開始通過對C運行的應用程序調試++源代碼 - (順便說一句,我使用VS 2005)

回答

0

編譯與調試信息,然後按F5代碼(開始調試)。我看不出問題在哪裏。在Linux上是一樣的。

+0

看來你沒有得到我想告訴的點 – Vijay 2010-07-27 07:25:11

1

我明白你的痛苦;幾個月前我採取了同樣的道路。

你可能知道了,但Visual Studio並不是gcc/g ++的確切替代方案。它嵌入了文本編輯器,調試器等。

通常,您有兩個彙編「模式」,調試版本。一步(你可以添加你自己的)

調試模式下,所有的優化被禁用,你可以在調試器中執行程序,使用步驟,添加斷點,...

剛啓動使用F5鍵。

上的附加文件的更多注意事項:

在Visual Studio中的世界,.vcproj文件表示「項目」:一堆文件屬於同一個項目(源文件,標題,資源,...) 。

A .dsw(我相信當前的.sln文件的舊名稱)是「解決方案」文件:一組一個或多個可能具有內部依賴關係的項目。例如:你可以在同一個解決方案中擁有一個庫和一個依賴它的軟件。所以當你編譯整個解決方案時,事情是按照正確的順序構建的。

+1

調試/發佈配置與是否可以調試代碼之間沒有直接關係。你可以調試發佈版的代碼 - 但顯然如果它經過大量優化,調試可能會有點跳動(這是一個普遍的事實,而不是VS的東西)。發佈版本可能會或可能不會被設置爲生成完整的符號文件(.PDB文件),但可以啓用發佈版本而不會顯着更改可執行文件的大小。 – 2010-07-27 07:15:20

1

你應該嘗試的第一件事是當它運行到附加到該進程(CTR - Alt鍵 - P和選擇過程中)如果你有.pdb(調試信息)文件,你應該能夠調試過程而不重新構建它。

如果失敗嘗試取消選中「要求源文件與原始版本完全匹配」選項工具 - >選項 - >調試

如果失敗了,您將不得不再次構建應用程序(打開.sln文件並執行構建),以便二進制文件與您的源文件匹配。

祝你好運。

4

主要區別在於,在Unix上,您將擁有在Windows上無法找到的Makefiles。 Visual Studio在項目和解決方案中組織代碼,並且這些項目文件包含編譯&鏈接項目所需的所有信息。

如果你有一個* .sln文件,只需雙擊它在VS中打開它。然後構建源代碼(通常按F6鍵)並以調試模式運行(通常爲F5)。

更多詳細信息: 項目是一個源文件的集合,它產生'something',通常是LIB,DLL或EXE。

解決方案是項目的集合。當例如一個項目創建一個由另一個項目使用的LIB。當你設置項目之間的依賴關係時,VS會按照正確的順序構建項目。

擴展使用:

  • *的.vcproj:對於C/C++源
  • 項目文件* .vcproj..user:包含窗口是在GUI打開。 可以安全地刪除。

  • *的.sln:解決方案文件

  • * .NCB:智能感知數據庫的解決方案。可以安全地刪除。
  • * .suo:包含哪些窗口在GUI中打開。可以安全地刪除。

  • * .dsw:Visual Studio 6.0相關文件 - VS2005中未使用。 (由*的.sln IIRC代替)

  • ./Debug/*:有用於調試的所有 中間文件的文件夾共建 (可改變)

  • ./Release/*:文件夾中的所有 對於發行 構建中間文件(可以更改)

這就是我可以在那一刻想到的。

0

VS2005可以將您的dsw文件轉換爲sln文件,但您需要所有原始VC6文件才能使轉換成功。爲了調試,請查看下面的msdn鏈接,我希望這會幫助你。

http://msdn.microsoft.com/en-us/library/sc65sadd.aspx 請選擇超級鏈接「調試本機代碼」以獲得特定的C++版本。

3

如果您只有.DSW文件而不是.SLN文件,那麼這意味着該項目可能是上次使用VC6而不是以後的Visual Studio版本中的一個。

這很遺憾,因爲自VC6以來,C++編譯器發生了很多變化,而且您可能會發現該項目無法在VS2005中編譯而無需對源代碼進行一些細微的更改。

您是否有.SLN文件 - 如果是,那麼文件頂部的版本號是什麼(它是一個文本文件)?如果你沒有.SLN文件,你能得到VC6嗎?

在我試圖將其推向更高版本之前,我總是會嘗試使用最佳匹配工具在不熟悉的平臺上進行操作。