Visual Studio 2008 每日提示(二十八)

本篇包括tip271-tip290
http://www.watch-life.net/visual-studio/visual-studio-2008-tip-day-28.html

注:作者的tip编号发生错误,同#277 直接跳到了#288 ,中间一大截都没有(#278-#287),具体是什么原因,不得而知了。为了保持和原文章的一致,也沿用跳转的编号。

#271、启用地址级调试的设置的作用是什么?

原文链接:What the Enable Address-Level Debugging option does

操作步骤:
菜单:工具+选项+调试+常规,有个"启用地址级调试"项,如果启用该项,将会得到另外三个调试工具:“反汇编”窗口、“寄存器”窗口和地址断点。

如果不选中此项,就不会有。

评论:启用地址级调试非常有用,可特别针对一些深层次的bug,容易找到问题所在。

#272、如何自动显示或不显示反汇编

原文链接:How to show the disassembly automatically or not at all

操作步骤:
菜单:工具+选项+调试+常规,在选中“启动地址级调试”后,选项“源代码不可用时显示反汇编”变成可用的。

如果此项没有选中,你将看到如下对话框(当前位置的代码是不可用的,是否自动启动反汇编?)

在对话框中选中“自动显示反汇编”项,就会显示代码的反汇编内容。

评论:对很熟悉反汇编的人来说,这个功能很有用,对于不熟悉的,看反汇编就好比看天书了。

#273、用断点筛选器中断正确的进程

原文链接:You can use Breakpoint Filters to break the right process

操作步骤:
菜单:工具+选项+调试+常规,选中“启用断点筛选器”项。

对于多个实例运行在一个应用上时,如果想中断其中一个实例的进程,就可以用点点筛选器。 右键单击断点,选择“筛选器”

在筛选器对话框,你可以确定什么是中断,比如,指定进程的ID

你可以在断点窗口来验证断点筛选器

评论:这个功能对多进程的调试非常有用。

#274、不启用异常助手

原文链接:You can disable the Exception Assistant

操作步骤:
如果你单击一个异常,异常助手对话框就会弹出。如下图所示,就是一个“分母为零”的异常发生后出现异常助手。

如果你不想看见异常助手,可以如下操作:
菜单:工具+选项+调试+常规,不选中“启用异常助手”项。

如果没有选中该项,单击断点时,你将获得一个典型的未处理的异常信息。

评论:我觉得还是启用的好,对解决异常错误很有帮助。

#275、从异常助手里检查异常对象

原文链接: You can examine the exception object from the exception assistant

操作步骤:
在异常助手对话框中,有个“查看详情”的链接

单击这个链接,将打开“查看详情”的对话框,显示有关异常内容。

评论:查看异常的详情,对处理异常提供非常有用的提示。

#276、在异常助手里单击复制异常详情

原文链接: you can copy the exception details with one click from the exception assistant

操作步骤:
在异常助手对话框中,有个“复制异常详情到剪贴板”的链接,单击此链接,可以把异常的详情复制到剪贴板。

评论:复制有关异常的内容,对测试人员记录异常信息很有用。

#277、在未处理的异常上调用堆栈时,做了什么?

原文链接:What unwinding the call stack on unhandled exceptions does

操作步骤:
菜单:工具+选项+调试+常规,选中“启用异常助手”项,在此项下面的“未处理的异常上调用堆栈”项变得可用。

如果没有启动该项,意味着不会自动调用堆栈。启用该项,如下所示异常的变量出现在局部变量窗口。

评论:此功能可以很详细查看有关堆栈中的异常变量。

(注:有关#278-#287 在作者的博客缺失,原因不明。)

#288、显示外部代码

原文链接:How to show External code

操作步骤:
调试状态,在“调用堆栈”窗口,单击右键,选择“显示外部代码”,则会显示非用户的代码(系统代码)即外部代码

评论:显示外部代码,可以从net 底层系统来调试程序了。说不定你也许可以找到net框架的bug呢

#289、什么是“仅你的代码”?

原文链接:what is just your code

操作步骤:

菜单:工具+选项+调试+常规,有个“启用‘仅我的代码’”项。
那么那些是“你的”代码呢?

1、你的代码被优化过。
2、你的代码没有符号
3、你的代码没有标记DebuggerNonUserCodeAttribute

例如在一个解决方案里有两个项目:ClassLibrary1 and ConsoleApplication1,ConsoleApplication1调用ClassLibrary1 的类在控制台显示一个“hello world”,在生成的时候比较ClassLibrary1为优化,在ConsoleApplication1中封装Console.WriteLine方法地方设置一个断点,然后单步调试,到达断点时候,发现在断点处中断了,继续按F11,并没有进入方法内部,而是跳到了下一行。

评论:只调试我的代码,让你的更专注。

#290、在生成的时候,优化你的代码

原文链接:How to optimize your code for a build

操作步骤:
针对c#,在项目属性中,选择“生成”标签页选中“优化代码”。

菜单:工具+选项+调试+常规,不选中“在模块加载中禁止jit优化’”项。

随着优化代码选项被选中和禁止模块加载jit优化,在上篇例子中的ClassLibrary1被优化了,从而不再是你的代码了。

评论:调试的选项非常丰富,需要学习的东东很多哟。



微信扫描下方的二维码阅读本文

那年今日

2010-01-12 web developer tips (73): IIS搜索引擎优化工具包 (0 个评论)

2008-01-12 windows moblie 5.0在托管程序中实现短信接收和拦截 (1 个评论)

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注