使用Process Explorer工具分析Visual Studio 2013编译和调试产生的进程

简介: 使用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


......


 


相关文章
|
11月前
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
274 1
|
12月前
|
微服务
微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
140 2
|
消息中间件 网络协议 Python
工具人逆袭!掌握Python IPC,让你的进程从此告别单打独斗
【9月更文挑战第9天】你是否曾遇到多个Python程序像孤岛般无法通信,导致数据孤立、任务难协同的问题?掌握进程间通信(IPC)技术,可助你打破这一僵局。IPC是不同进程间传递数据或信号的机制,在Python中常用的方法有管道、消息队列、共享内存及套接字等。其中,管道适用于父子或兄弟进程间简单数据传递;套接字则不仅限于本地,还能在网络间实现复杂的数据交换。通过学习IPC,你将能设计更健壮灵活的系统架构,成为真正的编程高手。
121 3
|
12月前
|
开发框架 .NET 开发工具
visualstudio如何加入工作插件---Web developer工具
visualstudio如何加入工作插件---Web developer工具
164 0
|
Python
python Process 多进程编程
python Process 多进程编程
131 1
|
人工智能 前端开发 Devops
NET技术在现代开发中的影响力日益增强,本文聚焦其核心价值,如多语言支持、强大的Visual Studio工具、丰富的类库和跨平台能力。
【7月更文挑战第4天】**.NET技术在现代开发中的影响力日益增强,本文聚焦其核心价值,如多语言支持、强大的Visual Studio工具、丰富的类库和跨平台能力。实际应用涵盖企业系统、Web、移动和游戏开发,以及云服务。面对性能挑战、容器化、AI集成及跨平台竞争,.NET持续创新,开发者应关注技术趋势,提升技能,并参与社区,共同推进技术发展。**
169 1
|
JavaScript 前端开发
nodejs process进程
nodejs process进程
134 0
|
消息中间件 网络协议 Python
工具人逆袭!掌握Python IPC,让你的进程从此告别单打独斗
【8月更文挑战第3天】你是否苦恼于Python程序间的“信息孤岛”现象?进程间通信(IPC)技术能助你打破壁垒。IPC是使不同进程共享数据或信号的方法。因全局解释器锁(GIL),多进程配合IPC成为高效处理数据的选择。Python提供管道、消息队列、共享内存等多种IPC手段。例如,管道适合简单父子或兄弟进程通信;套接字不仅限于网络通信,还能实现本地进程间复杂数据交换。掌握IPC,让你的进程协同作战,构建更强大灵活的系统。
112 0
|
开发框架 前端开发 .NET
Visual Studio中的四款代码格式化工具
Visual Studio中的四款代码格式化工具
542 0