天天看點

使用Process Explorer工具分析Visual Studio 2013編譯和調試産生的程序

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

繼續閱讀