在 Visual Studio 2008 中调试 Expression Blend 应用程序
Microsoft Expression Blend 是一种设计应用程序,可用于创建基于 Microsoft Windows 的各种 Windows Presentation Foundation (WPF) 应用程序和适用于 Web 的 Microsoft Silverlight 应用程序。同样用于生成 Microsoft Windows 应用程序的 Microsoft Visual Studio 2008 可以打开、生成和调试 Expression Blend 项目。如果在使用 Expression Blend 的“运行项目”(F5) 功能调试应用程序时遇到问题,可以使用 Visual Studio 2008 获取有关运行时错误的详细错误消息。有时,您可以修复运行时错误,方法是尝试对 XAML 或代码中做不同的更改,直到查明出错根源为止。不过,更快的方法是在应用程序运行时逐行单步执行代码,以便实际观察具体原因。
逐行单步执行代码
在 Visual Studio 2008 中打开 Expression Blend 项目。
单击引起您注意的代码行,然后按 F9 来设置中断点。如果要从头开始单步执行代码,请在 Window1.xaml.cs 文件中的 this.InitializeComponent(); 行上设置断点。
按 F5 启动应用程序。
Visual Studio 2008 将生成并运行应用程序,直到调用设置有断点的行。此时,应用程序将停止执行,Visual Studio 2008 将显示包含该断点的文件,并在即将执行的代码行处显示黄色箭头。
在“调试”菜单上,有三个选项可用于单步执行代码:
“逐语句”(F11) 将执行下一行代码,如果该行是函数调用,将转到该函数调用中的第一行。
“逐过程”(F10) 也会执行下一行代码,但如果该行是函数调用,将执行该函数,并转到该函数调用之后的下一行。
“跳出”(SHIFT+F11) 将转到函数调用之外。
最常用的选项是“逐过程”(F10)。在单步执行代码时,可以看到代码的执行路径以及代码是否按照预期的顺序执行。
在“局部变量”面板中,可以查看当前实例化的变量以及这些变量包含的值。在单步执行代码时,“局部变量”面板中的变量值将会更新。如果您怀疑循环调用的次数少于应有的调用次数或怀疑变量并没有包含应有的值,或者变量在未处于所需位置之前消失(超出范围),则可以借此来调试应用程序。
调试 WPF 浏览器应用程序
若要当 WPF 浏览器应用程序在浏览器中运行时对其进行调试,您必须使用 Visual Studio 2008 Standard Edition 或更高版本的“附加到进程”功能。请使用以下过程。
生成并运行您的项目至少一次以创建调试文件。
从命令行键入以下行并按 Enter。
%SystemRoot%\system32\PresentationHost.exe -debug
这将在调试模式下启动 WPF 进程。
在 Visual Studio 2008 中,打开 WPF 浏览器应用程序项目。
在“项目”菜单中,单击“属性”。在“调试”选项卡上,选择“启用非托管代码调试”。关闭属性窗口。
在“调试”菜单中,单击“附加到进程”。
在“附加到进程”窗口中,单击“附加到”旁边的“选择”。在“调试以下代码类型”下,选中“托管”和“本机”,然后单击“确定”。在“可用进程”下,选择“PresentationHost.exe”。单击“附加”开始调试。
在 Windows 资源管理器中,在项目的 bin\Debug 文件夹中双击应用程序的 .xbap 文件。
应用程序将在默认的浏览器中启动。如果设置了任何断点,应用程序将停止执行,Visual Studio 2008 将显示包含该断点的文件,并在即将执行的代码行处显示黄色箭头。从此处开始,可以照常单步执行代码。
有关调试的详细信息,请参阅 MSDN 上的使用 Visual Studio 进行调试。
在 Visual Studio 2008 中调试运行时 XAML 错误
如果在运行时出现 XAML 错误,则可以在项目文件(.csproj 或 .vbproj)的 <PropertyGroup> 部分中添加以下行,以获取有关导致错误的 XAML 行的信息。
<XamlDebuggingInformation>true</XamlDebuggingInformation>
默认情况下,此项目文件属性仅在生成的调试版中设置为 true,原因是这会增加应用程序的大小。
常规调试
尽管采用这种调试方式很难查明错误原因或找出应用程序中存在错误之处,但却有助于了解可能遇到的错误类型。有关详细信息,请参阅调试 Expression Blend 应用程序。