附加进程调试的 使用场景

时间:2023-02-20 16:52:41
   以下情况下可以考虑使用附加进程调试:
1、现有工程或程序无法正常运行;
    在vs中打开项目或工程不能正常运行,可能该项目是整个业务系统中的一部分,包括数据访问借助第三方基础平台,或使用wcf或webservice远程调用网络服务。
2、自己开发的程序要求嵌入到其他框架中(或整个业务系统中),数据调用、使用接口等遇到问题,除非调通所有必需的步骤,使当前程序能正常调试。
3、要求调试的程序是一部分,不完整的,不能通过运行整个项目正常调试,但是有在远程服务器上部署站点,可以正常运行。
4、现有工程可以正常调试(指的是可以重新生成解决方案 ,使用单步或逐步调试),但是每次修改模块都要求重新运行整个系统,准备测试数据,一步一步测试到修改模块,在执行调试过程,这一流程很是费时间。

    前提:把远程服务器上部署好的站点拷贝一份到本地,重新部署到本地IIS上,确保部分功能能正常运行(需要调试的模块可以正常运行);
    在IIS上选择浏览 运行该站点; 在任务管理器中可以查找到w3wp.exe进程;
    在vs调试或工具 菜单栏选择 "附加到进程" 或直接Ctr +Alt +P 快捷键 运行整个工程。
    如下图:
附加进程调试的 使用场景
    选中要调试的进程(确认用户名为本地部署需要调试站点的应用程序池名称);

   遇到的问题:
1、w3wp.exe :w3wp.exe是在IIS(因特网信息服务器)与应用程序池相关联的一个进程,如果你有多个应用程序池,就会有对应的多个w3wp.exe的进程实例运行。这个进程用来分配大量的系统资源。
2、断点进不去
首先确认本地部署的程序集是最新的;
依次查看该工程属性,找到web下对应的调试器,选择要调试的项目类型:asp.net或siverlight;
检查设置:工具-选项-调试-要求源文件与原始版本完全一致去掉;
检查web.config配置文件web节点下 <compilation defaultLanguage="c#" debug="true"> 设置;确认可以调试;
3、确认附加的进程
如上图确认要附加的进程的用户名,该用户名与托管的应用程序池相对应,最好部署到本地时,新指定一个应用程序池,可能附加到其他进程,断点一直进不去;
调试指定模块时,删除其他模块已加的断点,只保留当前要调试的断点