Visual Studio 调试技能之即时窗口的妙用

小微 科技Visual Studio 调试技能之即时窗口的妙用已关闭评论103字数 1754阅读模式
摘要在 Visual Studio 中有一个窗口叫 Immediate 窗口,中文版本应该叫即时窗口。默认会在你启动调试时在 VS 编辑器中弹出来。你也可以通过 Debug | Win...

在 Visual Studio 中有一个窗口叫 I妹妹ediate 窗口,中文版本应当叫即时窗口。默许会在你启动调试时在 VS 编辑器中弹出来。你也能够通过 Debug | Windows | I妹妹ediate 或者使用快捷键 Ctrl+Alt+I 手动把它调出来。

这个窗口很实用,特别是在调试的时候。下面总结几个即时窗口的实用技能。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

临时运行C代码运行的结果,比如你骤然想知道一个空数组调用Sum办法会不会报错,或者想查看一下Math.PI的值。你不用傻傻地把测试代码写在项目里,设个断点,然后把项目跑起来查看。你可以期近时窗口中直接写C Interactive 来实现个功能。如果只是为了临时运行 C Interactive 会更好用些。二者使用有些区分,C# Interactive 打印内容需要手动调用 Console.Write 等办法:文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

调试时调用任何办法文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

假如你正在调试一个办法,你临时测试一下这个办法对于不同的参数的执行进程或运行结果。比如对于这样一段代码:文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

classProgram
{
staticvoidMain
{
var foo = new Foo;
var result = foo.Add;
Console.WriteLine;
}
}

publicclassFoo
{
publicintAdd
{
if
return0;
var result = 0;
foreach
{
// ...(其它代码)
result += n;
}
return result;
}
}

若想用不同的参数来测试foo.Add办法的运行情况,普通的做法是启动屡次调试,每一次调试都修改一下调用代码 foo.Add 的参数。使用即时窗口,你可以在办法调用途打个断点。然后期近时窗口编写调用代码,它会直接使用当前上下文进行调试。不需要中止 VS 调试再从新启动。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

此外,期近时窗口可以调用私有办法,也就是说它不受办法的走访权限限制。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

无非,期近时窗口编写调用私有办法的代码时是没有智能提醒的。文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

使办法执行不影响上下文文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

默许情况下,期近时窗口运行的代码,执行完后会对上下文发生副作用(Side Effect)。比如对于这样一段代码:文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

classProgram
{
staticvoidMain
{
var foo = new Foo;
Console.WriteLine;
}
}

publicclassFoo
{
publicint Num { get; privateset; }
publicintIncrease
{
return ++Num;
}
}

期近时窗口中调用foo.Increase后,Num 的变化如下:文章源自微观生活(93wg.com)微观生活-https://93wg.com/2475.html

但不少时候咱们只但愿即便窗口只是临时运行一下调试代码,不想让它真修改上下文的状况。咱们只需在表达式后面添加 , nse(no side effect 的简写)便可:

加之 nse 后,执行的那句代码至关于在一个沙箱中运行,以及上下文互不干扰。

走访特殊变量

Visual Studio 在调试进程中有一些特殊的变量,可以期近时窗口打印它们的值。这些特殊的变量以 $ 作为前缀,通过智能提醒可以看到目前有三个这样的特殊变量:

  • $exception,当前的异样信息。有时候在调试时,你代码的 try/catch 语句没有给 catch 语句使用 Exception 参数,则可以期近使窗口使用该特殊变量打印异样信息。
  • $returnvalue,当前语句的返回值。有时候你在代码中调用了一个办法,但你并无用一个变量来存储这个办法的返回值,而你在调试时又想知道它的返回值。此时你可以在办法执行处添加一个断点。当运行到该断点时,按 F10,然后期近时窗口可以通过 $returnvalue 打印该办法的返回值。
  • $user,可以用来获取当前登录操作系统的用户信息以及当前运行的过程以及线程信息。这个我也没用过,官方文档介绍也比较简单,也不知道这个特殊变量包括哪些成员。直接打印是这样的:

收场

本文分享的这几个即时窗口的技能,在调试时很实用,在工作中我时常使用,但愿它也能够帮助你提高开发效力。关于调试,VS 还有其它好用的工具或技能,比如有一个 Watch(监视)窗口,如果调试时要频繁查看一个对象的值,使用监视窗口比即时窗口利便不少。

固然,还是但愿大家自己去探索更多的技能,以做到能更高效灵便地使用 VS 这个强大的编辑器。

-

以上就是微观生活(93wg.com)关于“Visual Studio 调试技能之即时窗口的妙用”的详细内容,希望对大家有所帮助!

继续阅读
 
小微
  • 版权声明: 本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:81118366@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
  • 转载请务必保留本文链接:https://93wg.com/2475.html