使用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)调试过程会产生以下进程


conhost.exe -- win32控制台窗口主机

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


......


 


上一篇:Win7+Win8双系统安装教程!零风险超简单2步搞定


下一篇:使用NVelocity0.5实现服务器端页面自动生成