DBX vs. Visual Studio和WinDbg:部分2D,条件断点


这就是我们整个系列的内容:


今天的文章是关于配置条件断点。最后,这是一个窗口工具具有与数据库同等功能的领域,至少就基本功能而言是如此。

条件断点是与条件相关联的断点。如果条件为真,调试器将在断点处停止;否则,它将继续执行。那么,重要的问题是什么类型和形状的条件断点是可用的,以及表达式计算器如何处理复杂的条件表达式。

DBX
DBX使得指定条件断点变得相当容易。追加-如果在任何停止命令,您就拥有了一个适用于断点范围内任何内容的条件。例如:

stopped in main at line 15 in file "stl.cc"
   15     global = 1;
(dbx) stop at 22 -if v.size() == 2
(7) stop at "stl.cc":22 -if v.size() == 2
(dbx) cont
stopped in main at line 22 in file "stl.cc"
   22     m[5] = v;
(dbx) status
(6) stop infunction main
*(7) stop at "stl.cc":22 -if v.size() == 2 

 

可视化工作室
Visual Studio支持条件断点—当设置断点时,您可以指定一个条件,该条件必须为真,调试器才能停止。不幸的是,这些条件比expressions you can input in the Immediate Window。琐碎的事情,如参数名称> 13,当然还在工作。

WinDbg
WinDbg提供了在遇到断点时执行任意调试器命令的能力,从而完全避免了这个问题。这个调试器命令可以做的事情之一是使用千兆周命令;或者,它可以显示一些输出、停止等。

我们之前已经看到一个WinDbg对实现停止对象等效的DBX命令;我不会在这里重复另一个例子。