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


......


 


相关文章
|
7月前
|
Linux
Linux源码阅读笔记10-进程NICE案例分析2
Linux源码阅读笔记10-进程NICE案例分析2
|
7月前
|
Linux
Linux源码阅读笔记09-进程NICE案例分析1
Linux源码阅读笔记09-进程NICE案例分析1
|
3月前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
96 4
|
4月前
|
NoSQL 编译器 C语言
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。
C语言调试是开发中的重要技能,涵盖基本技巧如打印输出、断点调试和单步执行,以及使用GCC、GDB、Visual Studio和Eclipse CDT等工具。高级技巧包括内存检查、性能分析和符号调试。通过实践案例学习如何有效定位和解决问题,同时注意保持耐心、合理利用工具、记录过程并避免过度调试,以提高编程能力和开发效率。
78 1
|
4月前
|
运维 JavaScript jenkins
鸿蒙5.0版开发:分析CppCrash(进程崩溃)
在HarmonyOS 5.0中,CppCrash指C/C++运行时崩溃,常见原因包括空指针、数组越界等。系统提供基于posix信号机制的异常检测能力,生成详细日志辅助定位。本文详解CppCrash分析方法,涵盖异常检测、问题定位思路及案例分析。
108 4
|
4月前
|
运维 监控 JavaScript
鸿蒙next版开发:分析JS Crash(进程崩溃)
在HarmonyOS 5.0中,JS Crash指未处理的JavaScript异常导致应用意外退出。本文详细介绍如何分析JS Crash,包括异常捕获、日志分析和典型案例,帮助开发者定位问题、修复错误,提升应用稳定性。通过DevEco Studio收集日志,结合HiChecker工具,有效解决JS Crash问题。
137 4
|
5月前
|
微服务
微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
微服务实践之使用 Visual Studio 2022 调试Dapr 应用程序
70 2
|
5月前
|
NoSQL Linux 程序员
进程管理与运行分析
进程管理与运行分析
40 0
|
5月前
|
开发框架 .NET 开发工具
visualstudio如何加入工作插件---Web developer工具
visualstudio如何加入工作插件---Web developer工具
67 0
|
6月前
|
消息中间件 网络协议 Python
工具人逆袭!掌握Python IPC,让你的进程从此告别单打独斗
【9月更文挑战第9天】你是否曾遇到多个Python程序像孤岛般无法通信,导致数据孤立、任务难协同的问题?掌握进程间通信(IPC)技术,可助你打破这一僵局。IPC是不同进程间传递数据或信号的机制,在Python中常用的方法有管道、消息队列、共享内存及套接字等。其中,管道适用于父子或兄弟进程间简单数据传递;套接字则不仅限于本地,还能在网络间实现复杂的数据交换。通过学习IPC,你将能设计更健壮灵活的系统架构,成为真正的编程高手。
41 3

热门文章

最新文章

相关实验场景

更多