在Internet上为ASP.NET进行远程调试时没有遇到断点

时间:2008-12-22 09:07:47

标签: asp.net debugging

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

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

问题:

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

  2. 在VS内部远程启动调试的正确顺序是什么? (远程设置已完成,我可以看到远程进程)。 在VS中,我将起始页作为远程站点的URL。我开始没有调试,然后附加到遥控器上的w3wp.exe。这都是吗?

1 个答案:

答案 0 :(得分:4)

您运行的是网站还是Web应用程序(它是一个已编译的项目,您部署了DLL,还是您部署的aspx和aspx.cs文件的集合)?

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

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

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

  1. 部署最新的文件调试版本
  2. 远程服务器上的请求页面以启动/重新启动应用程序
  3. 确保VS远程调试监视器已在远程服务器上启动并运行
  4. 在VS中,转到工具(或调试)|附加到进程...,确保在限定符中选择了远程服务器,并为正确的应用程序池选择w3wp.exe等。
  5. 将触发断点的请求页面。
  6. 调试!
  7. 如果断点是空心的(薄红色圆圈而不是填充的磁​​盘),我会经常检查VS中的堆栈窗口,看看有没有加载的东西。