1、Process Explorer和Process Monitor軟體下載下傳
https://docs.microsoft.com/zh-cn/sysinternals/downloads/process-explorer https://docs.microsoft.com/zh-cn/sysinternals/downloads/procmon下載下傳完,打開Process Explorer軟體,菜單->File->Save As,可以把目前運作的程序名稱記錄在文本。再通過Beyond Compare對比軟體檢視差異,由此我們可以通過它來分析Visual Studio 2013編譯和調試過程中究竟産生了哪些程序。
2、打開Visual Studio 2013,背景會産生devenv.exe程序
devenv.exe位于C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe
3、建立Win32控制台程式,然後編譯,編譯過程會産生以下程序:
MSBuild.exe -- 這個生成編譯的發起者,統籌全局
mspdbsrv.exe -- Microsoft® Program Database
vcpkgsrv.exe -- Microsoft (R) Visual C++ Package Server
conhost.exe -- win32控制台視窗主機
cl.exe -- 真正的編譯器,源碼編譯執行者
其中cl.exe位于C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.exe,這個程序生命周期比較短暫,編譯完源碼,cl程序就會被殺死。
MSBuild.exe位于C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe
4、調試
(1)調試過程會産生以下程序
ConsoleApplication1.exe -- 使用者程式
由此可見,調試使用的是VS自身的程序,沒有額外産生其他程序。
(2)使用Process Monitor軟體來觀察:
打開軟體->菜單->Filter->Filter...->Process Name contains devenv->Add
可以觀察到,devenv.exe會通路相關檔案,例如,這裡隻截取了部分系統資料庫及檔案:
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\Debugger
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0_Config\Debugger\CodeView Compilers
HKCU\Software\Microsoft\VisualStudio\12.0\AD7Metrics\Engine
......
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Packages\Debugger\
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Packages\Debugger\vsdebugeng.impl.DLL
C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Packages\Debugger\Visualizers\atlmfc.natvis