WEB开发网
开发学院软件开发VC 功能强大的vc6调试器 阅读

功能强大的vc6调试器

 2007-03-17 21:27:25 来源:WEB开发网   
核心提示: 1 Ctrl+B打开断点设置框,如下图:Figure 1设置高级位置断点2 然后选择D行所在的断点,功能强大的vc6调试器(2),然后点击condition按钮,在弹出对话框的最下面一个编辑框中输入一个很大数目,F5运行程序,程序停在A行,具体视应用而定,这里1000就够了

1 Ctrl+B打开断点设置框,如下图:

Figure 1设置高级位置断点

2 然后选择D行所在的断点,然后点击condition按钮,在弹出对话框的最下面一个编辑框中输入一个很大数目,具体视应用而定,这里1000就够了。

3 按F5重新运行程序,程序中断。Ctrl+B打开断点框,发现此断点后跟随一串说明:...487 times remaining。意思是还剩下487次没有执行,那就是说执行到513(1000-487)次时候出错的。因此,我们按步骤2所讲,更改此断点的skip次数,将1000改为513。

4 再次重新运行程序,程序执行了513次循环,然后自动停在断点处。这时,我们就可以仔细查看DoSome是如何返回0的。这样,你就避免了手指的痛苦,节省了时间。

再看位置断点其他修饰条件。如Figure 1所示,在“Enter the expression to be evaluated:”下面,可以输入一些条件,当这些条件满足时,断点才启动。譬如,刚才的程序,我们需要i为100时程序停下来,我们就可以输入在编辑框中输入“i==100”。

另外,如果在此编辑框中如果只输入变量名称,则变量发生改变时,断点才会启动。这对检测一个变量何时被修改很方便,特别对一些大程序。

用好位置断点的修饰条件,可以大大方便解决某些问题。

二 数据断点(Data Breakpoint)

软件调试过程中,有时会发现一些数据会莫名其妙的被修改掉(如一些数组的越界写导致覆盖了另外的变量),找出何处代码导致这块内存被更改是一件棘手的事情(如果没有调试器的帮助)。恰当运用数据断点可以快速帮你定位何时何处这个数据被修改。譬如下面一段程序:#include "stdafx.h"
#include
int main(int argc, char* argv[])
{
  char szName1[10];
  char szName2[4];
  strcpy(szName1,"shenzhen");    
  printf("%s
", szName1);    //A
  strcpy(szName2, "vckbase");    //B
  printf("%s
", szName1);
  printf("%s
", szName2);
  return 0;
}
 这段程序的输出是     szName1: shenzhen
  szName1: ase
  szName2: vckbase
szName1何时被修改呢?因为没有明显的修改szName1代码。我们可以首先在A行设置普通断点,F5运行程序,程序停在A行。然后我们再设置一个数据断点。如下图:

Tags:功能强大 vc 调试器

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接