Visual Studio附加IIS进程调试按F11无法步进引用项目代码如何解决
调试步进引用项目解决方案
可行性确认
通过附加IIS进程调试项目A时,完全可以步进至其引用的项目B代码。你之前尝试的双VS实例附加devenv.exe的方案逻辑错误,无需额外启动VS实例,所有调试操作均可在同一个VS实例内完成。
前置检查项
- 确认项目B生成的
pdb符号文件与项目A引用的项目Bdll版本完全匹配,优先使用项目B的Debug版本编译产物,不要使用Release优化后的版本 - 确认项目B的源码与项目A引用的
dll是同一份代码编译生成,不存在代码改动后未重新编译项目B、也未更新项目A引用的情况 - 取消VS「仅我的代码」限制:打开VS顶部菜单→工具→选项→调试→常规,取消勾选启用仅我的代码选项后保存
- 确认之前附加进程时,选择的调试目标类型包含「托管代码」,且附加的
w3wp.exe是项目A对应的正确IIS工作进程
标准操作步骤
如果可以调整项目A的解决方案结构,优先用该方案:
- 打开项目A的解决方案,右键解决方案→添加→现有项目,导入项目B的项目文件
- 右键项目A的引用列表,删除原有对项目B的dll引用,改为引用同解决方案内的项目B
- 清理整个解决方案后重新生成,确保所有编译产物同步
- 在项目B的目标方法处提前打断点,或者在项目A的调用行触发调试后按F11,即可直接步进至项目B的代码
无权限调整解决方案时的操作
如果无法将项目B添加到项目A的解决方案中,按以下步骤操作:
- 编译项目B的Debug版本,将生成的
dll和对应的pdb文件全部拷贝到项目A的bin目录下覆盖原有文件 - 附加IIS进程进入调试状态后,打开VS顶部菜单→调试→窗口→模块,找到项目B的dll条目,右键选择「加载符号」,定位到刚才拷贝的pdb文件完成加载
- 手动在VS中打开项目B的目标代码文件打上断点,触发调用后即可正常步进调试
内容的提问来源于stack exchange,提问作者Danny Smith
相关产品推荐
相关产品推荐

