【问题标题】:Breakpoint not hit when remote debugging on Internet for ASP.NET在 Internet 上为 ASP.NET 进行远程调试时未命中断点
【发布时间】:2008-12-22 09:07:47
【问题描述】:

我在通过 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(s)。就这些了吗?

【问题讨论】:

    标签: asp.net debugging


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 这是一个网络应用程序,而不是网站应用程序。你提到的一切都已经完成。但是我的第一个问题仍然存在。你如何让 .pdb 文件加载以及 VS 期望它在哪里?查看站点的日志,我没有看到正在记录 DEBUG 命令。
    • 我也找不到 %tmp%\Visual Studio Web Debugger.log 文件。我查看了 %tmp% 文件夹,查看了文档和设置文件夹树以及 VS 本身树。 VS中是否有启用此日志记录的设置?
    • VS如何判断dll和.pdb不匹配?时间戳?一些内容?它们应该匹配,因为我正在将文件从本地计算机复制到远程服务器。
    • 抱歉耽搁了:我通常将 .pdb 放在 Web 应用程序的 bin 目录中,在 .dll 旁边。
    猜你喜欢
    • 1970-01-01
    • 2014-05-08
    • 2014-04-26
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-25
    相关资源
    最近更新 更多