技术开发 频道

C#调试三部曲:从入门到精通

  断点过滤器

  我们可以限制断点在特定的处理器和进程中。可以设置机器名、进程id、进程名、线程id、线程名中的某些条件来过滤一些断点。

  注意:ThreadId需要特别说明一下,ThreadId并不是托管程序中,.NET 框架中System.Threading.Thread.ManagedThreadId,两者不能等同。简单来说,ManagedThreadId是线程在CLR中的标识符,而ThreadId却是线程在操作系统中的标识符。因此ThreadId需要从调试器中的“Threads”窗口中获取。

  断点条件

  我们可以设置断点达到的条件,如下图,我们设置表达式为i==5(注意是判相等,而不是赋值的等于),按F5,断点再次被触发,此时i=50。

断点过滤器
 

  还有一个选项是已经被改变,则里面条件是具体的变量,如我们的代码如下

private void ConditionDebug()
{
            
int hitCount = 0;
            
for (int i = 0; i < 100; i++)
            {
                
if (i==49)
                {
                    hitCount
= 1;
                }    
            }
            Console.Write(
"Hit Count={0}", hitCount);
}

 

  我们在代码里如果i==49,就将hitCount的值改变,同时设置断点的条件为

  则当断点再次被触发的时候此时i=50。这个通常被用在找变量的时在什么时候发生改变。

  断点的位置

  可以设置断点的位置,如下图,设置程序到达那个文件的第几行第几个字符时触发断点。

断点过滤器
 

  断点触发时…

  我们可以设置断点到达时做一些其他的事情,如打印消息,运行一个宏。

断点过滤器
 

  自定义调用堆栈

  堆栈跟踪时vs一步步执行你的程序是对当前的方法调用继承关系的直观显示。在调试程序时,我们会经过一个又一个方法,包括方法的嵌套调用。堆栈跟踪会对这当中的每一层方法作出记录。选择“调试-->窗口-->调用堆栈”,或者是快捷键Ctrl+Alt+C就可以看到当前的堆栈跟踪状态。这里会将每个方法单独显示为一行,并且带有行号和参数值。每一个新的方法调用被称为堆栈帧。

断点过滤器
 

  堆栈跟踪是广为人知的调试工具,它的优点在于你可以双击任意一行跳转到程序中该层调用方法的代码。于是你可以看到程序是如何执行到这一位置的,同时可以看到方法接受的参数值。并且可以使用Ctrl+C将一个或者全部堆栈帧复制到剪贴板,并将这个方法的调用信息发送给工作伙伴。

   Start external program:调试的时候启动内部程序

  Start browser with URL:调试的时候打开URL地址    

0
相关文章