Visual Studio Debugger Visual Studio Debugger中七个鲜为人知的小功能 1.    一键跳转到指定语句 2.    添加指定实例值的断点 3.    重新附加进程 4.    显示所有的线程 5.    临时禁用指定断点 6.    查看所有线程的调用栈 7.    使用无负面效果的方法评估

 

Visual Studio debugger是一个很棒的调试工具,可以帮助程序猿们快速地发现和解决问题。这里给大家简单介绍一下VS调试工具中的七个鲜为人知的小功能。

1.    一键跳转到指定语句

调试过程中经常需要拖拽黄箭头,使特定语句执行或者不执行。常规方法就是使用鼠标直接拖拽。

在Visual Studio 2017 15.3预览版中,有一个更简单地跳转到目标行的方法:在目标行盘旋鼠标指针,出现绿色竖线右箭头图标后,按住CTRL后鼠标左键点击,就把调试黄箭头移过去了,再点击调试下一步或者F5就直接在指定行运行了。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

2.    添加指定实例值的断点

有时候某个实例的属性值会莫名其妙的变化,当我们需要知道为什么变化的时候,会在属性代码中添加断点,但是这会对所有实例都生效。

在调试的时候,可以使用Make Object ID和Conditional Breakpoint功能去添加指定实例的断点,具体如下:

  • 首先我定义了一个类,并初始化了两个对象,更改PointX的值,想要添加实例a的PointX值的改变断点

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

  • 在调试过程中,右击实例a选择Make Object ID

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

  • 这时实例a被赋值到$1中,在要添加的断点出右击选择Conditions…

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

  • 添加$1 == this代码后,再运行程序,则在实例a属性改变的时候断点生效,实例b属性改变的时候不生效了。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

注意Make Object ID记录的是内存中对象的地址,下次调试的时候就改变了,需要重新设置。

3.    重新附加进程

Attach to Process是大家经常需要用的功能,Visual Studio 2017中有一个新的选项叫做Reattach to Process,可以方便大家重新附加到最近一次附加到的进程上。

先附加到一个进程上,点击Stop Debugging,然后再点击Debug就能看到里面的Reattach to Process选项了。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

4.    显示所有的线程

在调试过程中,调试工具栏中有一个新的选项叫做:Show Threads in Source。点击后即可在有线程停止的代码行前显示一个图标,鼠标停留在图标上显示线程,右击图标可以显示可用操作。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

注意这个功能可能影响调试效率,如果不需要的话建议默认关闭。

5.    临时禁用指定断点

当进行多线程调试的时候,可以利用Disable Breakpoint功能临时禁用指定断点,防止其它线程由于断点中断,影响当前线程的调试工作。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

6.    查看所有线程的调用栈

调试过程中,在Command Window中输入”Debug.ListCallStack -AllThreads”,即可看到所有线程的调用栈。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

也可以用WinDBG命令”~*k”:

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

7.    使用无负面效果的方法评估

有时候可能需要在调试Watch窗口中查看一个方法的返回值,但是真正执行这个方法的时候可能会产生负面效果,这里可以在Watch窗口输入的时候添加”, nse”来避免负面效果,是”No Side Effects”的缩写。例子如下:

刚开始Add执行了六次,所以testList总数是6,

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

现在想查看Add当前执行的返回值,可以在Watch窗口输入Add(1),但是这会产生负影响,改变testList的值为7,

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

因此如果想不影响testList的原始值,则需要加上”, nse”,如下显示是8,但是testList原始值未变还是7:

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

介绍到此为止,有你喜欢的调试小功能么,欢迎来评论~

Visual Studio debugger是一个很棒的调试工具,可以帮助程序猿们快速地发现和解决问题。这里给大家简单介绍一下VS调试工具中的七个鲜为人知的小功能。

1.    一键跳转到指定语句

调试过程中经常需要拖拽黄箭头,使特定语句执行或者不执行。常规方法就是使用鼠标直接拖拽。

在Visual Studio 2017 15.3预览版中,有一个更简单地跳转到目标行的方法:在目标行盘旋鼠标指针,出现绿色竖线右箭头图标后,按住CTRL后鼠标左键点击,就把调试黄箭头移过去了,再点击调试下一步或者F5就直接在指定行运行了。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

2.    添加指定实例值的断点

有时候某个实例的属性值会莫名其妙的变化,当我们需要知道为什么变化的时候,会在属性代码中添加断点,但是这会对所有实例都生效。

在调试的时候,可以使用Make Object ID和Conditional Breakpoint功能去添加指定实例的断点,具体如下:

  • 首先我定义了一个类,并初始化了两个对象,更改PointX的值,想要添加实例a的PointX值的改变断点

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

  • 在调试过程中,右击实例a选择Make Object ID

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

  • 这时实例a被赋值到$1中,在要添加的断点出右击选择Conditions…

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

  • 添加$1 == this代码后,再运行程序,则在实例a属性改变的时候断点生效,实例b属性改变的时候不生效了。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

注意Make Object ID记录的是内存中对象的地址,下次调试的时候就改变了,需要重新设置。

3.    重新附加进程

Attach to Process是大家经常需要用的功能,Visual Studio 2017中有一个新的选项叫做Reattach to Process,可以方便大家重新附加到最近一次附加到的进程上。

先附加到一个进程上,点击Stop Debugging,然后再点击Debug就能看到里面的Reattach to Process选项了。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

4.    显示所有的线程

在调试过程中,调试工具栏中有一个新的选项叫做:Show Threads in Source。点击后即可在有线程停止的代码行前显示一个图标,鼠标停留在图标上显示线程,右击图标可以显示可用操作。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

注意这个功能可能影响调试效率,如果不需要的话建议默认关闭。

5.    临时禁用指定断点

当进行多线程调试的时候,可以利用Disable Breakpoint功能临时禁用指定断点,防止其它线程由于断点中断,影响当前线程的调试工作。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

6.    查看所有线程的调用栈

调试过程中,在Command Window中输入”Debug.ListCallStack -AllThreads”,即可看到所有线程的调用栈。

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

也可以用WinDBG命令”~*k”:

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

7.    使用无负面效果的方法评估

有时候可能需要在调试Watch窗口中查看一个方法的返回值,但是真正执行这个方法的时候可能会产生负面效果,这里可以在Watch窗口输入的时候添加”, nse”来避免负面效果,是”No Side Effects”的缩写。例子如下:

刚开始Add执行了六次,所以testList总数是6,

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

现在想查看Add当前执行的返回值,可以在Watch窗口输入Add(1),但是这会产生负影响,改变testList的值为7,

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

因此如果想不影响testList的原始值,则需要加上”, nse”,如下显示是8,但是testList原始值未变还是7:

Visual Studio Debugger
Visual Studio Debugger中七个鲜为人知的小功能
1.    一键跳转到指定语句
2.    添加指定实例值的断点
3.    重新附加进程
4.    显示所有的线程
5.    临时禁用指定断点
6.    查看所有线程的调用栈
7.    使用无负面效果的方法评估

介绍到此为止,有你喜欢的调试小功能么,欢迎来评论~