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

功能强大的vc6调试器

 2007-03-17 21:27:25 来源:WEB开发网   
核心提示:要成为一位优秀的软件工程师,调试能力必不可缺,功能强大的vc6调试器,本文将较详细介绍VC6调试器的主要用法,windows平台的调试器主要分为两大类:1 用户模式(user-mode)调试器:它们都基于win32 Debugging API,很痛苦,使用VC6断点修饰条件就可以轻易解决此问题,有使用方便的界面,主要用

要成为一位优秀的软件工程师,调试能力必不可缺。本文将较详细介绍VC6调试器的主要用法。

windows平台的调试器主要分为两大类:

1 用户模式(user-mode)调试器:它们都基于win32 Debugging API,有使用方便的界面,主要用于调试用户模式下的应用程序。这类调试器包括Visual C++调试器、WinDBG、BoundChecker、Borland C++ Builder调试器、NTSD等。

2 内核模式(kernel-mode)调试器:内核调试器位于CPU和操作系统之间,一旦启动,操作系统也会中止运行,主要用于调试驱动程序或用户模式调试器不易调试的程序。这类调试器包括WDEB386、WinDBG和softice等。其中WinDBG和softice也可以调试用户模式代码。

国外一位调试高手曾说,他70%调试时间是在用VC++,其余时间是使用WinDBG和softice。毕竟,调试用户模式代码,VC6调试器的效率是非常高的。因此,我将首先在本篇介绍VC6调试器的主要用法,其他调试器的用法及一些调试技能在后续文章中阐述。

一 位置断点(Location Breakpoint)

大家最常用的断点是普通的位置断点,在源程序的某一行按F9就设置了一个位置断点。但对于很多问题,这种朴素的断点作用有限。譬如下面这段代码:void CForDebugDlg::OnOK()   
{
  for (int i = 0; i < 1000; i++)  //A
  {
    int k = i * 10 - 2;  //B
    SendTo(k);    //C
    int tmp = DoSome(i);  //D
    int j = i / tmp;  //E
  }
}   
 执行此函数,程序崩溃于E行,发现此时tmp为0,假设tmp本不应该为0,怎么这个时候为0呢?所以最好能够跟踪此次循环时DoSome函数是如何运行的,但由于是在循环体内,如果在E行设置断点,可能需要按F5(GO)许多次。这样手要不停的按,很痛苦。使用VC6断点修饰条件就可以轻易解决此问题。步骤如下。

1 2 3  下一页

Tags:功能强大 vc 调试器

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