使用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


......


 


相关文章
Linux源码阅读笔记10-进程NICE案例分析2
Linux源码阅读笔记10-进程NICE案例分析2
Linux源码阅读笔记09-进程NICE案例分析1
Linux源码阅读笔记09-进程NICE案例分析1
|
11月前
|
弹性计算 运维 监控
基于进程热点分析与系统资源优化的智能运维实践
智能服务器管理平台提供直观的可视化界面,助力高效操作系统管理。核心功能包括运维监控、智能助手和扩展插件管理,支持系统健康监控、故障诊断等,确保集群稳定运行。首次使用需激活服务并安装管控组件。平台还提供进程热点追踪、性能观测与优化建议,帮助开发人员快速识别和解决性能瓶颈。定期分析和多维度监控可提前预警潜在问题,保障系统长期稳定运行。
489 17
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
523 4
|
运维 JavaScript jenkins
鸿蒙5.0版开发:分析CppCrash(进程崩溃)
在HarmonyOS 5.0中,CppCrash指C/C++运行时崩溃,常见原因包括空指针、数组越界等。系统提供基于posix信号机制的异常检测能力,生成详细日志辅助定位。本文详解CppCrash分析方法,涵盖异常检测、问题定位思路及案例分析。
556 4
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
644 4
|
微服务
微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
204 2
|
消息中间件 网络协议 Python
工具人逆袭!掌握Python IPC,让你的进程从此告别单打独斗
【9月更文挑战第9天】你是否曾遇到多个Python程序像孤岛般无法通信,导致数据孤立、任务难协同的问题?掌握进程间通信(IPC)技术,可助你打破这一僵局。IPC是不同进程间传递数据或信号的机制,在Python中常用的方法有管道、消息队列、共享内存及套接字等。其中,管道适用于父子或兄弟进程间简单数据传递;套接字则不仅限于本地,还能在网络间实现复杂的数据交换。通过学习IPC,你将能设计更健壮灵活的系统架构,成为真正的编程高手。
201 3
|
NoSQL Linux 程序员
进程管理与运行分析
进程管理与运行分析
131 0
|
并行计算 API 调度
探索Python中的并发编程:线程与进程的对比分析
【9月更文挑战第21天】本文深入探讨了Python中并发编程的核心概念,通过直观的代码示例和清晰的逻辑推理,引导读者理解线程与进程在解决并发问题时的不同应用场景。我们将从基础理论出发,逐步过渡到实际案例分析,旨在揭示Python并发模型的内在机制,并比较它们在执行效率、资源占用和适用场景方面的差异。文章不仅适合初学者构建并发编程的基础认识,同时也为有经验的开发者提供深度思考的视角。