Silverlight 3的推出为开发人员带来了一个全新的编程环境。其中各种新功能新特性帮助编程人员实现了许多需求。创建一个程序的过程中调试环节是必不可少的步骤,而且是相当重要的。在Silverlight的开发过程中,我们主要用Silverlight Tools for Visual Studio 2008 来对Silverlight应用程序进行调试。#t#
Silverlight Tools 支持大多数托管调试功能。但是,它不支持"编辑并继续"、实时调试和混合模式调试。安装 Silverlight Tools 后,可以像调试任何其他项目类型那样来调试Silverlight 3进程项目。按 F5 后,Visual Studio 将在默认的浏览器中启动您的应用程序,并附加调试器。然后,您可以执行常见任务,例如设置断点和检查调用堆栈。
1 将调试器附加到Silverlight 3进程
安装 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 3进程代码设置断点,也可以在宿主网页中的 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 3进程代码中的断点。