asp.net - 在 Internet 上远程调试 ASP.NET 时未命中断点

标签 asp.net debugging

我已经在通过 Internet 访问的 Window 2003 服务器上进行了远程调试。我的 XP 开发盒上安装了 VS 2008 SP1。

我在远程服务器上启动了该站点,并附加到远程服务器上的所有 w3wp.exe 进程。我注意到 .dll 没有加载符号文件。当我尝试从本地计算机加载相应的 .pdb 文件时,它说文件不匹配。我未选中“要求源文件与原始版本完全匹配”。远程服务器上的程序集与我的开发盒上的程序集相同。该站点和 .dll 已从 dev boc 复制到远程服务器,此后代码没有更改。所以我知道 .dll 和 .pdb 文件应该匹配,或者至少我需要强制匹配。

问题:

  1. 如何加载 .pdb 文件?我知道除非加载符号文件,否则断点不会触发。我注意到远程服务器上的“临时 ASP.NET 文件”文件夹中不存在 .pdb 文件。 .dll 可以。

  2. 在 VS 内开始远程调试的正确顺序是什么? (远程设置已完成,我可以看到远程进程)。 在 VS 中,我将起始页作为远程站点的 url。我开始时不进行调试,然后附加到远程上的 w3wp.exe。这就是全部吗?

最佳答案

您正在运行网站或 Web 应用程序(是您为其部署 DLL 的已编译项目,还是您部署的 aspx 和 aspx.cs 文件的集合)?

如果是 Web 应用程序,您部署的是发布版本还是调试版本? “调试”发布版本时您将无法命中断点,因为代码经过了相当程度的优化。

您是否在 web.config 编译部分设置了“debug=true”?如果没有,调试将会很困难。

最后我在远程调试时使用的步骤是:

  1. 部署文件的最新调试版本
  2. 请求远程服务器上的页面来启动/重新启动应用程序
  3. 确保 VS 远程调试监视器已启动并在远程服务器上运行
  4. 在 VS 中,转到“工具”(或“调试”)|附加到进程...,确保在限定符中选择远程服务器,并为正确的应用程序池选择 w3wp.exe 等。
  5. 将触发断点的请求页面。
  6. 调试!

如果断点是空心的(细红色圆圈而不是填充的磁​​盘),我会经常检查 VS 中的“堆栈”窗口以查看已加载和尚未加载的内容。

关于asp.net - 在 Internet 上远程调试 ASP.NET 时未命中断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/385826/

相关文章:

c# - 在 Internet Explorer 中删除不需要的垂直滚动条

javascript - 使用 jquery 选择一个 Asp.net 控件

debugging - 意外的运算符(operator) [ : git: in bourne shell script 'if' conditional statement

android - 在 Eclipse 上为 Android 程序插入断点

debugging - 什么是 0x%08lx?

java - Java 对带有 final 变量的 if 语句有多聪明

asp.net - 使用 Windows 身份验证,但被重定向到表单例份验证登录页面?

c# - 如何解码使用 encodeURIComponent() 在 JS 中编码的 HTML?

javascript - JQuery 轮播中的 ASP 转发器

windows - 使用哪个工具打开 .pdb(符号)文件?