技术开发 频道

重中之重Silverlight 3 中的调试

  【IT168 技术】创建一个程序的过程中调试环节是必不可少的步骤,而且是相当重要的。在Silverlight的开发过程中,我们主要用Silverlight Tools for Visual Studio 2008 来对Silverlight应用程序进行调试。Silverlight Tools 支持大多数托管调试功能。但是,它不支持"编辑并继续"、实时调试和混合模式调试。安装 Silverlight Tools 后,可以像调试任何其他项目类型那样来调试 Silverlight 项目。按 F5 后,Visual Studio 将在默认的浏览器中启动您的应用程序,并附加调试器。然后,您可以执行常见任务,例如设置断点和检查调用堆栈。

  1 将调试器附加到 Silverlight 进程

  安装 Silverlight Tools 后,还可以将调试器附加到任意本地进程(前提是该进程是在受支持的浏览器中运行基于 Silverlight 的应用程序)。"附加到进程"对话框(在"调试"菜单上)列出了在"类型"列中标有"Silverlight"的那些进程。若要调试 Silverlight 代码,请使用"附加到"的默认值"Silverlight"来附加到浏览器进程。请注意,可以使用"附加到"的值"脚本"来在宿主网页中调试 JavaScript 代码。但是,不能同时调试 Silverlight 代码和 JavaScript 代码。

  2 将调试器附加到远程 Mac 进程

  您还可以将调试器附加到一个远程 Mac 浏览器进程(前提是该进程运行基于 Silverlight 的应用程序)。此操作要求在两台计算机上都要执行一些额外的配置步骤,并且仅在运行 Windows 的计算机和 Mac 计算机之间支持此操作。另外,当调试远程进程时,"反汇编"和"寄存器"窗口不可用。

  3 Silverlight 调试 API

  用于实现 Silverlight 托管代码调试的本机 API 是 ICorDebug Interface(ICorDebug 接口)。虽然 Silverlight 会添加一些新的 API,但该 API 还可用于实现使用完整 .NET Framework 的托管应用程序的调试器。这意味着,您可以将现有托管代码调试器扩展为支持 Silverlight,而无需使用大量新代码。

  4 在Silverlight 项目中调试 JavaScript

  在 Visual Studio 中,可以在托管 Silverlight 代码设置断点,也可以在宿主网页中的 JavaScript 代码中设置断点。但是,如本主题前面所述,不能同时调试 Silverlight 代码和 JavaScript 代码。若要使用 Internet Explorer 调试 JavaScript,首先必须将浏览器配置为启用脚本调试。在 Internet Explorer 的"工具"菜单上,选择"Internet 选项"。然后,在"高级"选项卡上,执行以下操作:

  • 清除"禁用脚本调试(Internet Explorer)"复选框

  • 清除"禁用脚本调试(其他)"复选框。

  • 选中"显示每个脚本错误的通知"复选框。

  • 清除"显示友好 HTTP 错误消息"复选框。

  当您使用 F5 调试基于 Silverlight 的应用程序时,Visual Studio 默认情况下将附加 Silverlight 调试器。JavaScript 断点将显示一个工具提示,其消息为"当前不会命中断点。还没有为该文档加载任何符号。"可以用下列两种方法之一调试 JavaScript 代码:

  • 使用 Ctrl+F5 启动您的应用程序,而不启动调试器。然后可以按照本主题前面所述,使用"脚本"代码类型将调试器附加到浏览器进程。附加调试器后,可以刷新浏览器以重新加载 Silverlight 插件。该插件是调试应用程序启动代码所必需的。

  • 如果解决方案中包含 Web 项目,请禁用 Silverlight 调试器。在 Visual Studio 中,选择该 Web 项目,然后在"项目"菜单上,选择项目名称"属性"。接下来,在"Web"选项卡中的"调试器"部分,清除"Silverlight"复选框。然后,可以使用 F5 在不附加脚本调试器的情况下启动您的应用程序。

  如果附加了脚本调试器,将禁用托管 Silverlight 代码中的断点。

  在安装完Silverlight_Tool后我们就拥有了Silverlight调试器。但默认网站的调试器是Asp.Net调试器,如果不更换那么Silverlight中的断点可能永远不会命中。并且在VS中显示为不会命中断点。如下图

  在网站的属性中选择上Silverlight调试器可以解决这个问题

  

       了解过基础的配置之后,我们来看一个例子:

  在 Mac上设置远程调试。Mac 上的 Silverlight 远程调试由以下部分组成:

  • Visual Studio 2008 的一个加载项,它以传输选项的形式提供 Silverlight 远程调试。该加载项作为 Silverlight Tools for Visual Studio 2008 的一部分安装。

  • 在 Mac 上运行的一个代理服务,可帮助远程调试器识别运行 Silverlight 应用程序的本地进程。它作为 Macintosh 的 Silverlight Developer 运行时的一部分安装。

  远程调试是通过调试器和目标计算机之间的 SSL 加密 TCP 通道进行的。必须在 Mac 计算机和 Windows 计算机上都执行初始配置,才能设置 TCP 端口以及私钥/公钥对。下面的演练说明如何将计算机配置用于调试以及如何在 Visual Studio 2008 中启动调试会话。

  需要以下组件来完成本演练:

  • 运行 Windows 的计算机,其上安装有 Visual Studio 2008 SP1 和 Silverlight Tools for Visual Studio 2008。

  • 安装有 Silverlight Developer 运行时的 Mac 计算机。

  • 这两台计算机都连接到网络。

  • 可通过某种方法在 Windows 和 Mac 计算机之间传输文件。

  设置远程调试

  首先,必须在 Mac 计算机上配置远程调试代理。

  配置 Mac 计算机

  1 从 /Applications 目录运行“Silverlight 调试配置”应用程序。

  2 单击“生成新配置”按钮。

  这样可产生以下效果:

  • “网络端口(TCP IPv4)”字段中填入了一个随机生成的介于 49152 和 65535 之间的端口号。

  • 创建一个每用户配置目录 ~/Library/Application Support/SilverlightDebuggingConfig1.0/,其中包含以下文件:Certificate.dat、PrivateKey.dat 和 Settings.dat。

  • 创建每用户启动代理 ~/Library/LaunchAgents/com.microsoft.silverlight.debugproxy.plist。

  3 在“加密密码”文本框中指定一个 8 到 25 个字符的密码,然后将它复制到“验证密码”文本框中。

  4 在“复制器路径”文本框中,为 PC 配置指定一个路径和 .exe 文件名,或者接受默认值。

  5 单击“生成 PC 配置”按钮。

  将弹出一个对话框,要求确认是否在第 4 步中指定的位置创建 PC 配置 .exe 文件。如果运行 Windows 的计算机将用来调试 Mac 计算机上的 Silverlight,则可以将该文件与此计算机配合使用。若需要,还可以重新生成该文件,方法是重新运行“Silverlight 调试配置”应用程序,并从第 4 步开始执行上述过程。

  Mac 计算机此时即配置完毕,可用于远程调试。接下来,将使用生成的 .exe 文件配置运行 Windows 的计算机。

  配置运行 Windows 的计算机

  1 关闭所有打开的 Visual Studio 实例。

  2 将在前面的过程中创建的 .exe 文件复制到运行 Windows 的计算机。

  3 运行此 .exe 文件。

  4 输入在前面的过程中指定的密码。

  5 在指示 Windows 配置已成功完成的对话框中,单击“确定”。

  运行 Windows 的计算机此时即配置完毕,可用于远程调试。接下来,将在这两台计算机之间建立连接,以便可以开始进行调试。

  将 Visual Studio 调试器连接到您的 Mac 上运行的基于 Silverlight 的应用程序

  1 在您的 Mac 计算机上启动要调试的基于 Silverlight 的应用程序。

  2 在运行 Windows 的计算机上,使用 Visual Studio 打开在 Mac 计算机上运行的应用程序所对应的 Silverlight 项目。

  3 在“调试”菜单上选择“附加到进程”。

  4 在“传输”下拉列表中选择“Silverlight 远程跨平台调试”。

  5 在“限定符”组合框中,指定您的 Mac 计算机的完全限定域名或 IP 地址。

  “可用进程”窗口显示您的 Mac 上当前正在运行的进程的列表。

  6 选择基于 Silverlight 的应用程序进程。可以通过“类型”列来识别 Silverlight 进程。

  7 单击“附加”。

  Visual Studio 调试器此时即附加到 Mac 中的目标进程。这时可以使用 Visual Studio 执行一般调试器任务,例如设置断点、逐句通过代码和检查调用堆栈。

  有时,您可能希望撤消刚执行过的配置。例如,可能需要针对 Silverlight 的下一版本对配置进行升级。下面的过程描述如何撤消前面的过程。

  移除 Mac 调试配置

  1 在运行 Windows 的计算机上打开一个命令提示窗口,然后运行下面的命令:

  如果是 Windows Vista:

rmdir /s /q %LOCALAPPDATA%\Microsoft\SilverlightDebuggingConfig1.0

  如果是 Windows XP:

rmdir /s /q "%USERPROFILE%\Local Settings\Application Data\Microsoft\SilverlightDebuggingConfig1.0"

  2 在 Mac 计算机上打开一个终端窗口,然后运行以下命令:

rm –rf ~/Library/Application\ Support/SilverlightdebuggingConfig1.0

  cd ~
/Library/LaunchAgents

  launchctl unload ~
/Library/LaunchAgents/com.microsoft.silverlight.debugproxy.plist

  rm ~
/Library/LaunchAgents/com.microsoft.silverlight.debugproxy.plist

视频教程下载

0
相关文章