Blocks进行安装断点调节和测量试验程序,VS2008调解入门指南澳门威尼斯人网址

生机勃勃、调节和测量试验早先要做的办事

第风姿罗曼蒂克,大家要确认保障Code::Blocks的布局不错,调节和测量检验专业本事实行得更流畅

为此,我们必要改动调节和测量试验符号。调节和测量检验符号可以让调节和测量试验器知道代码的哪意气风发行正在试行,那样您就足以掌握程序运转到哪里了。

为保证调节和测量试验符号设置科学,请在Code::Blocks中筛选体系 | 编译选项(Project |
Build Options卡塔尔国,会看出如此叁个对话框:

澳门威尼斯人网址 1

您必要确认保障调试(Debug)目的里的变型调整符号(Produce debugging
symbols卡塔 尔(阿拉伯语:قطر‎
选用被勾选上。

还亟需在编写翻译 | 采取对象 | 调节和测量检验(Build | Select Target
|Debug卡塔尔国中,确定保障调节和测验(Debug卡塔 尔(英语:State of Qatar)作为项目标指标被选中:

澳门威尼斯人网址 2

 

如上操作确认保证了指标是对品种进展调节和测量检验,调节和测量检验器将使用调节和测验符号来编写翻译你的次序。

 

4、能够调整的Release版本

澳门威尼斯人网址 3
图 设置断点(Set Breakpoint卡塔 尔(阿拉伯语:قطر‎

二、设置断点

调节和测量检验器的价值在于,它能让我们看看程序正在做的事体——哪些代码正在实行,以至变量的值是稍微。

为此,大家在程序的某些地点设置断点,然后在调节和测量检验器下运作该程序。调节和测验器将实践顺序,直到达到安装了断点的代码行。当时,编写翻译器便能够令你查看程序,恐怕一步步地实施顺序,检查代码的每生机勃勃行是什么影响你的变量的。

第生龙活虎我们来看后生可畏段用来测算特定数额资金的利率(interest
rate卡塔尔国、年利息(compounded annually卡塔尔的次序:

#include <iostream>
using namespace std;
double computeInterest (double base_val, double rate, int years)
{
    double final_multiplier;
    for ( int i = 0; i < years; i++ )
    {
        final_multiplier *= (1 + rate);
    }
    return base_val * final_multiplier;
}

int main ()
{
    double base_val;
    double rate;
    int years;
    cout << "Enter a base value: ";
    cin >> base_val;
    cout << "Enter an interest rate: ";
    cin >> rate;
    cout << "Enter the number of years to compound: ";
    cin >> years;

    cout << "After " << years << " you will have " << computeInterest( base_val, rate, years ) << " money" << endl;
}

澳门威尼斯人网址 4

 

 看了运维结果,很扎眼,现身了不当,这个时候我们将设置断点发轫进行调和。

1,先在main函数初步的地点,设置三个断点。那样就可以查阅全数程序的执行进度了。

(1卡塔尔将光标移到 double base_val 这一行

(2卡塔 尔(英语:State of Qatar)接受 调节和测验 | 设置断点 (Debug | Toggle
Breakpoint卡塔 尔(英语:State of Qatar)或许按下F5。那会在该代码行旁边的侧面栏中装置三个小红点,表明那生龙活虎行有四个断点:

澳门威尼斯人网址 5

 

(3卡塔尔国能够使用安装断点命令或许单击小红点用来设置或废除设置该断点。

(4卡塔 尔(阿拉伯语:قطر‎起始运路程序。选取调节和测验 | 开始(Debug | Start卡塔尔只怕按下F8。

澳门威尼斯人网址 6

如此程序将常规施行,直到碰着断点。

 

当今大家理应看见了开发的调试器,它看起来应当是这么的:

澳门威尼斯人网址 7

 

首先要留意的是小圆点下边包车型客车三角形,它象征兵接兵下去要实践的代码行。它跟小红点之间相隔若干行。

它因而未有紧挨着小红点,是因为变量的注明不发出任何的机械代码,由此,尽管断点看起来是在15行,但其实它在第18行。

 

(5卡塔尔当时应该还可能有三个监视(Watches)窗口打开了,如下图:

澳门威尼斯人网址 8

自身曾经进展了蹲点窗口的四个子项:局地变量(Local
variables卡塔尔和函数参数(Function Arguments卡塔 尔(英语:State of Qatar)。

蹲点窗口展览会示出全体当前可用的变量,富含部分变量和函数参数,以至那个变量的值。

注意:这里看起来像乱码的由来是因为大家还不曾对它们实行领头化,那也是接下去的几路程序所要做的专业。

 

(6卡塔 尔(阿拉伯语:قطر‎为了实践接下去的几行代码,大家须求告诉调节和测验器向下举行下一行(F7)

所谓向下实行意气风发行,就能进行业前的代码行,约等于三角形所标志的那少年老成行。

澳门威尼斯人网址 9

 

后生可畏经走到下生机勃勃行,程序就能够推行cout语句,输出一条信息到显示屏中,供给你输入三个值。

设若你尝试输入二个值但未有此外效果——因为程序还在调节和测量试验器的操纵之下。

再一次按下F7后,程序会等待客户输入,因为当时候cin函数还未有归来——cin函数必要在回来前获得客户的输入。

再次那后生可畏进度,分别输入0.1给利率,输入1给年数。

近来,断点抵达了那生机勃勃行代码:

澳门威尼斯人网址 10

 

再次确定输入是还是不是精确。大家可以通过监视窗口来检查局地变量的值:

澳门威尼斯人网址 11

 

瞩目:rate的值不是0.1,是因为0.10000…第11中学最末尾的1只是浮点数的意气风发种奇特的表明格局(浮点数并非准确的卡塔 尔(英语:State of Qatar),它实在太小了,对超多程序来讲不会引致异常的大影响。

 

(7卡塔尔以后大家规定一切都没难点,来调查一下computerInterest函数中会产生什么样,单步施行(Step
into卡塔 尔(阿拉伯语:قطر‎

澳门威尼斯人网址 12

 

 单步实践会步向当前进的函数里面去推行,而不像下生机勃勃行命令,只是执行函数然后展现给您最后的结果。

现行反革命大家就单步走入computerInterest函数之中:

澳门威尼斯人网址 13

 

(8卡塔尔从结果中我们能够见到函数的参数部分一切平常,但变量i 和
final_multiplier 值不对劲。

为此,使用下意气风发行命令(F7卡塔尔国,实施循环语句,由于它与局地初叶化操作相关联,大家看看会时有产生什么样。

澳门威尼斯人网址 14

 

(9卡塔尔国从当中大家可以见到,final_multiplier未有科学开始化。而且,接下去要执行的语句就要用到final_multiplier:

    final_multiplier *= (1 + rate);

 

 

那条语句的野趣是,将final_multiplier乘以(1+rate卡塔尔,再把结果再行赋值给final_multiplier。不过我们看出final_multiplier并从未被最初化,因而那些乘法的结果也将会是一个非僧非俗的值。

 

(10卡塔尔国怎么样修复bug?

咱俩需求在注脚final_multiplier变量的话语中,把它也早先化。在此个事例中,它应该被开端化1。

 

double final_multiplier=1;

 

 

(11卡塔尔修复bug后的运作结果为:

澳门威尼斯人网址 15

 

 

2、当Debug版本运转时产生崩溃,采用retry进行调解,通过看Call
Stack深入分析失误的岗位及原因

澳门威尼斯人网址 16

总结

透过上述三个简单易行的顺序案例,使本人调控了调理三个程序的着力流程,和剖析bug的进度,为之后本身单独探索bug,解除bug提供了实用的本事。

自己非但能够写bug,仍然是能够Debug!

 

int j = i / tmp; //E

图:
断点挑选器(Breakpoint Filter卡塔 尔(英语:State of Qatar)

#include

即时窗口(Immediate卡塔尔国:重要用于计算表明式

CTRL+F10
运作到眼下光标处。

在刹肢人体模型特式下,你有多条可利用的下令,使用相应命令进行更进一层的调整。

Figure 2 数量断点
F5继续运转,程序停在B行,表明B处代码改进了szName1。B处明明未有改过szName1呀?但调节和测量检验器指明是那大器晚成行,平常不会错,所以如故放平心态看看程序,哦,你意识了:szName2唯有4个字节,而strcpy了7个字节,所以覆写了szName1。
多少断点不只是对变量改造有效,还足以设置变量是或不是等于有个别值。举个例子,你能够将Figure
第22中学红圈处改为原则”szName2[0]==””y””“,那么当szName2首先个字符为y时断点就能运转。
能够见见,数据断点相对地方断点叁个非常的大的分别是不要鲜明指明在哪黄金年代行代码设置断点。

您已经在你想要暂停施行的地点设置了断点。将来按F5键运行调节和测量试验,当程序实践到断点处时,自动制动踏板实践。那个时候你有各类方式来检查代码。命中断点(hit the breakpoint卡塔尔后,加断点的行变为香艳,意指下一步将奉行此行。

调养方法:

5.3.1
Creating Object ID

b)、程序揭橥时,应该把具有模块的投射文件都存档。

澳门威尼斯人网址 17

慎选Link页,选中复选框”Generate Debug
Info”,这么些选项将使连接器把调节和测量试验音讯写进可实行文件和DLL
设若C/C++页中装置了Program Database以上的选项,则Link
incrementally能够接收。选中这一个选项,将使程序能够在上三次编写翻译的基础上被编写翻译(即增量编译卡塔 尔(英语:State of Qatar),而不必每趟都从头开端编写翻译。

澳门威尼斯人网址 18

别的调节和测量试验手段:系统提供豆蔻梢头雨后春笋特有的函数只怕宏来处理Debug版本相关的新闻,如下:
宏名/函数名
说明

strcpy(szName2, “vckbase”); //B

  1. Is True

  2. Has Changed

无须全局变量

澳门威尼斯人网址 19

{

图:
设置下一语句(Set Next Statement卡塔 尔(阿拉伯语:قطر‎

return 0;

调节和测量检验器实施到断点后,你可能须要一条一条的试行代码。“Step Over”[F10]命令用于一条一条的执行代码。那将实施业前高亮的行,然后暂停。假使在一条措施调用语句高亮时按F10,推行会停在调用语句的下一条语句上。Step Over会一遍全体艺术。

惠及调试的代码风格:

9.1
Parallel Task and Parallel Stacks


None
未有调试音讯

4.5
Import Export Data Tips

}

图:
逐语句(Step Into – F11)

1、VC++中F5开展调养运转

图:
断点条件设置

char szName2[4];

5.4 

Figure 1设置高职断点
2
然后选择D行所在的断点,然后点击condition按键,在弹出对话框的最上边四个编辑框中输入一个超级大数目,具体视应用而定,这里1000就够了。
3
按F5双重运路程序,程序中断。Ctrl+B展开断点框,发现此断点后紧跟着豆蔻梢头串表达:…487
times
remaining。意思是还剩下486回未有试行,那便是说实践到513(1000-487卡塔 尔(阿拉伯语:قطر‎次时候出错的。因而,大家按步骤2所讲,校订此断点的skip次数,将1000改为513。
4
再度重复运路程序,程序试行了511次巡回,然后自动停在断点处。当时,大家就足以留意翻看DoSome是如何再次回到0的。那样,你就制止了手指的惨烈,节省了光阴。
再看岗位断点其余修饰条件。如Figure 1所示,在“Enter the expression to be
evaluated:”下边,可以输入一些标准化,当那一个条件满意时,断点才开动。比方,刚才的前后相继,大家须求i为100时先后停下来,大家就足以输入在编辑框中输入“i==100”。
别的,假如在这里编写制定框中假设只输入变量名称,则变量产生变动时,断点才会运行。那对检查评定一个变量何时被退换很有益,非常对部分大程序。
用好岗位断点的梳洗条件,能够大大有利清除少数难点。

3.1选拔断点进行调节和测量试验

for (int i = 0; i < 1000; i++) //A

3.7断点筛选器(Breakpoint Filter卡塔尔国

F11
单步,要是提到到子函数,步向子函数内部

图:
增多断点标签(Adding Breakpoint Label卡塔尔国

3、使用映射文件调节和测量试验

8调弄整理十二线程程序(Debugging Multithreaded Program卡塔 尔(阿拉伯语:قطر‎

F7
重建

8.1
Exploring Threads Window

szName1何时被纠正呢?因为从没显著性的改善szName1代码。我们能够率先在A行设置普通断点,F5运路程序,程序停在A行。然后大家再安装多个数据断点。如下图:

有4个可同时选拔的监视窗口。
澳门威尼斯人网址 20
图:多个监视窗口

  Project settings中C++项的Debug Info选择为Program
Database,Link项的Debug中选择Debug Info和Microsoft format。

10.3
Filter IntelliTrace Data

int k = i * 10 – 2; //B

列出近期格局中的全部变量。当调节和测量试验器停在某特定断点并开采Autos窗口时,将体现当前界定中与此值相关的变量。

2、防御性的编制程序

您能够界定断点只对一定进度或线程有效。那在进展八十多线程程序的调治将养时非常有效。右击断点选“筛选器”就能够展开筛选器窗口。

这段程序的输出是

4.3
Adding Comments

详尽的注明

10.1
Overview

/Z7
C 7.0- Compatible
对象文件只怕可执行文件中带有行号和享有符号调节和测验消息,包蕴变量名及类型,函数及原型等

当您在贰个措施内部疗养时会用到它。假设你在这里时此刻艺术内按Shift – F11,调节和测量检验器会完成此措施的实施,之后在调用此措施的言语的下一条语句处暂停。

a)、创制映射文件:Project settings中link项,选中Generate
mapfile,输出程序代码地址:/MAPINFO: LINES,获得引出序号:/MAPINFO:
EXPORTS。

断点用于通告调节和测量试验器哪一天何处暂停程序的实践。通过点击侧边栏只怕按F9键在现阶段行增添断点。在加断点从前,你须求明白你的代码将会现身什么样错误,在怎么地方停下试行。当调节和测验器实践到断点处时,你能够选拔任何的调整工具核查代码什么地点现身错误。

5、查看API的错误码,在watch窗口输入@err能够查看恐怕@err,hr,当中”,hr”表示错误码的印证。

澳门威尼斯人网址 21
图 断点工具条(Breakpoint Toolbar卡塔尔

7、调节和测验内存变量的变动:当内部存款和储蓄器产生变化时停下来。???

普通我们通过在或者存在难题代码处加断点来运维调节和测量检验。因而,大家从断点最早讲起。

szName2: vckbase

8.3
Break Point Filter – Multithread Debugging

抱有变量都要起头化,成员变量在构造函数中初叶化

实施顺序将停在第二个断点处。下图给出了断点列表。

调治技能:

图:
设置断点条件(Set Breakpoint Condition卡塔 尔(阿拉伯语:قطر‎

szName1: ase

图:
设置断点标签(Setting Breakpoint Label卡塔尔国

TRACE
选择办法和printf完全黄金年代致,他在output框中输出调节和测量检验音讯

3.3 条件断点(Conditional Breakpoint卡塔尔

进程序调整制
VC允许被中断的前后相继继续运转、单步运营和平运动行到钦定光标处,分别对应快速键F5、F10/F11和CT翼虎L+F10。各样飞速键功用如下:
 
快捷键
说明

图:
条件断点符号(Conditional Breakpoint Symbol卡塔尔国

}

上海教室中Labels列都为空。上面介绍怎么着给断点设置标签(label卡塔 尔(阿拉伯语:قطر‎以致如何使用标签。只需在一定代码行的断点符号上右击(①卡塔 尔(阿拉伯语:قطر‎可能在断点窗口中安装(②卡塔 尔(阿拉伯语:قطر‎就能够对别的断点设置标签。

}

7调用旅馆(Call Stack卡塔尔国

{

*图:
创建**
Object ID***

printf(“%s\n”, szName1); //A

Step
Into(逐语句卡塔 尔(英语:State of Qatar):实行并活动到下一条语句(实际上,跳入上一条语句的代码块,此代码块的首先条)

/Zd
Line Numbers Only
对象文件可能可推行文件中只含有全局和导出符号以至代码行消息,不包罗符号调试音讯

澳门威尼斯人网址 22

总结
调治将养最首要的只怕你要观念,要预计你的次第可能出错的地方,然后选取你的调节和测验器来申明你的估量。

澳门威尼斯人网址 23

除此以外:VC中要编程不该生机勃勃开始就写cpp/h文件,而应当首先创造二个合适的工程。因为只有如此,VC能力选取妥当的编写翻译、连接
选项。对于参加到工程中的cpp文件,应该检查是还是不是在第生机勃勃行显式的含有stdafx.h头文件,那是Microsoft
Visual Studio为了加速编写翻译 速度而设置的预编译头文件。在此个#include
“stdafx.h”行后边的有着代码将被忽视,所以任何头文件应该在这里后生可畏行后边被含有。
对于.c文件,由于不可能富含stdafx.h,由此得以因此Project
settings把它的预编写翻译头设置为“不行使”,方法是:
弹出Project settings对话框
选择C/C++
Category选择Precompilation Header
筛选不应用预编写翻译头。

基准输入框的机动补全(intellisense**):**上边给出的断点条件特别轻易,能够特别轻巧的写到条件文本框中。有时你恐怕须要定义非常大很复杂的准绳。不必顾忌,VS为标准文本输入框也提供了机动补全效能。由此,在准绳框中输入就像在编辑器中近似方便。如下图。

/ZI
Program Database for Edit and Continue
除了前方/Zi的坚决守住外,这几个选项允许对代码进行调治进程中的修正和继续推行。那一个选项同期使#pragma设置的优化职能失效

4.6
Change Value Using Data Tips

strcpy(szName1,”shenzhen”);

那生龙活虎行用石青箭头标记。那行是程序继续试行时下一条将实行的说话。

printf(“%s\n”, szName1);

澳门威尼斯人网址 24

printf(“%s\n”, szName2);

澳门威尼斯人网址 25

设置
为了调节和测量检验四个前后相继,首先必得使程序中包涵调试音讯。日常情形下,二个从AppWizard创设的工程中蕴涵的Debug
Configuration自动包罗调试消息,不过是否Debug版本并非前后相继富含调节和测量检验音信的支配因素,程序设计者能够在跋扈的Configuration中扩充调节和测验新闻,饱含Release版本。
为了充实调节和测量试验音讯,能够坚守下述步骤进行:
展开Project
settings对话框(能够透过火速键ALT+F7开荒,也能够因此IDE菜单Project/Settings展开)
筛选C/C++页,Category中选用general ,则产出三个Debug
Info下拉列表框,可供选用的调节和测量检验信息 方式满含:
 
命令行
Project settings
说明

class Program   
    {   
        static void Main(string[] args)   
        {   
            string[] strNames = { "Name1", "Name2", "Name3", "Name4", "Name5", "Name6" };   

            foreach (string name in strNames)   
            {   
                Console.WriteLine(name);   // BreakPoint   
            }   
            int temp = 4;   
            for (int i = 1; i <= 10; i++)   
            {   
                if (i > 6)   
                    temp = 5;   
            }   
        }   

        public static void Method1()   
        {   
            Console.WriteLine("Break Point in Method1");   // BreakPoint   
        }   

        public static void Method2()   
        {   
            Console.WriteLine("Break Point in Method2");  // BreakPoint   
            Console.WriteLine("Break Point in Method2");  // BreakPoint   
        }   

        public static void Method3()   
        {   
            Console.WriteLine("Break Point in Method3");  // Breakpoint   
        }   
    }   

岗位断点(Location Breakpoint卡塔 尔(阿拉伯语:قطر‎
世家最常用的断点是平常的职分断点,在源程序的某生龙活虎行按F9就安装了叁个职位断点。但对此众多难点,这种勤政的断点效用有限。举例下边这段代码:

3.4导入/导出断点(Import / Export Breakpoint卡塔 尔(英语:State of Qatar)

int tmp = DoSome(i); //D

6即时窗口(Immediate Window卡塔 尔(阿拉伯语:قطر‎

Shift+F5
终止调节和测量试验

澳门威尼斯人网址 26

F10
单步,假若涉及到子函数,不进来子函数内部

图:
条件断点命中(Conditional Breakpoint hit卡塔尔国

关注
一个好的技师不应有把具有的论断绝外交情况给编写翻译器和调节和测量检验器,应该在程序中和煦再说程序维护和不当定位,具体措施包含:
对此有着有再次回到值的函数,都应有检查返回值,除非你确信这几个函数调用相对不会出错,或然不关切它是或不是出错。
某个函数再次来到错误,须求用任何函数取得错误的现实性音信。比如accept重返INVALID_SOCKET表示accept退步,为了查明
具体的诉讼失败原因,应该及时用WSAGetLastError获得错误码,并针对性的解决难点。
稍许函数通过丰硕机制抛出荒诞,应该用TWranglerY-CATCH语句来检查错误
技术员对于能管理的谬误,应该团结在尾部管理,对于不可能管理的,应该报告给客户让他俩调控怎么管理。假使程序出了非常,
并非常重返值和任何机制重回的错误新闻进行剖断,只可以是加大了找错误的难度。

4.4
Last Session Debugging Value

/Zi
Program Database
始建三个程序库(PDB),富含类型音讯和标识调节和测验音讯。

图:
断点列表

F5
调解/继续运行

万后生可畏变量中包含对象实例,左侧会有二个”+”号用于查看对象的品质和成员。

6、Set Next
Statement:该作用能够直接跳转到钦命的代码行实践,日常用来测量试验格外管理的代码。

安装断点的尺码之后,在调节和测验程序,调节和测量试验器只会在满意给定条件时才停住。

{

*图:**Local Variables***

#include “stdafx.h”

这是VS2008提供的新特色(feature卡塔尔。用于越来越好的治本断点。它使得大家能够更加好的分组和过滤断点。那像是对断点的归类。假使大家增加了与某风流倜傥功力相关的差别品类的断点,我们得以依靠要求使能(enable卡塔尔国、撤消(disable卡塔尔国、过滤(filter卡塔 尔(英语:State of Qatar)那么些断点。比如,倘使大家要调度一下代码块。

SendTo(k); //C

 

Ctrl+Shift+F9
打消全部断点

澳门威尼斯人网址 27

VERIFY
和ASSERT成效看似,所例外的是,在Release版本中,ASSERT不总括输入的表明式的值,而VE讴歌RDXIFY总计表达式的值。

数量便签是应用程序调试时期用于查看对象和变量的后生可畏种高档便签音讯。当调试器施行到断点时,将鼠标移到目的恐怕变量上方时,你会看出它们的脚下值。你还是足以看见有的错综相连对象(如dataset,datatable等等卡塔 尔(英语:State of Qatar)的细节。数据便签左上角有多少个”+”号用于开展它的子对象或然值。

F9
安装断点/撤消断点

那正是说怎么样调整代码呢?Visual Studio提供了累累用以调节和测量试验的工具。一时调节和测验供给花销多量时刻去识别root cause。VS提供了不知凡几扶助调节和测量试验的省心的工具。调节和测量检验器(Debugger卡塔尔包涵错误列表、增加断点、可视化的程序流程、调整实行流程、Data Tips、监视窗口(watch windows卡塔 尔(阿拉伯语:قطر‎、八线程调试、线程窗口、并行调试大概浏览以致AMDliTrace调节和测量试验大概浏览。笔者期望本文能够对调解作用的使用者享有裨益。请小心,本文使用VS二零零六。有些意义在旧版本中也是同等的,但是VS二零零六新增加了广大features(Labeling breakpoint, Pinned DataTip,
Multithreaded Debugging, Parallel debugging and 速龙liTrace卡塔 尔(阿拉伯语:قطر‎。

Call Stack
调用货仓反映了脚下断点处函数是被这多少个函数依照什么样顺序调用的。单击Debug工具条上的Call
stack就显示Call
Stack对话框。在CallStack对话框中展现了一个调用类别,最上面包车型大巴是现阶段函数,往下依次是调用函数的上级函数。单击这么些函数名能够跳到对应的函数中去。

*图:**Watch – Ctrl + D, W***

b)、 Call Stack窗口中能看见程序的调用货仓

10.2
Mapping with IntelliTrace

int main(int argc, char* argv[])

本文介绍了调理进程的中央内容。介绍了什么样接受VS调节和测试多个应用程序。作者解释了大概具备入眼的工具以致它们的接纳形式。对于并路程序调节和测验,小编只讲了根基部分。在深入学习小节中,深刻疏解了相互调节和测量试验进程。假设你感兴趣,请阅读。作者的最主要目标是饱含Visual Studio中提供的差不离具有调试工具。希望你从本文中学到了有的新知识。

szName1: shenzhen

那些标签怎么样扶持大家调节和测量检验呢?现在,全部断点都是使能的(enabled卡塔尔。假令你不想调试method2,经常意况下您不得不去相应的方式中二个三个的撤除断点,但这里你能够经过标签字过滤或然找出它们,然后选中它们以有利于的撤废它们。

3、使用Trace
4、用GetLastError来检查测验再次来到值,通过获取错误代码来深入分析错误原因
5、把错误音信记录到文件中

澳门威尼斯人网址 28

尽恐怕利用const

5监视窗口(Watch Windows卡塔 尔(阿拉伯语:قطر‎

奉行此函数,程序崩溃于E行,开采这个时候tmp为0,假使tmp本不应有为0,怎么当时为0啊?所以最佳能(CANON卡塔尔国够跟踪此番巡回时DoSome函数是哪些运营的,但鉴于是在循环体内,假设在E行设置断点,只怕需求按F5(GO卡塔尔国许数十次。那样手要不停的按,异常惨重。使用VC6断点修饰条件就能够随便解决此主题素材。步骤如下。
1 Ctrl+B张开断点设置框,如下图:

3.6
Breakpoint When Hit

数据断点(Data Breakpoint卡塔尔
软件调节和测量检验进度中,有的时候会发觉有个别数额会莫明其妙的被更改掉(如部分数组的越界写招致覆盖了别的的变量卡塔尔国,搜索哪个地方代码以致那块内部存款和储蓄器被转移是大器晚成件吃力的工作(若无调节和测验器的帮助卡塔 尔(阿拉伯语:قطر‎。得当运用数据断点能够高速帮你一直曾几何时哪个地方这些数据被改过。举个例子上面风度翩翩段程序:

4.7
Clear Data Tips

1、使用
Assert(原则:尽量轻易卡塔 尔(英语:State of Qatar) assert只在debug下生效,release下不会被编写翻译。

沃特ch窗口用于增多变量。你能够拉长大肆多少个变量。增多方式是,右击变量并选用”Add to 沃特ch”。

char szName1[10];

Shortcut Keys

Descriptions

Ctrl-Alt-V, A

Displays the Auto window

Ctrl-Alt-B

Displays the Breakpoints dialog

Ctrl-Alt-C

Displays the Call Stack

Ctrl-Shift-F9

Clears all of the breakpoints in the project

Ctrl-F9

Enables or disables the breakpoint on the current line of code

Ctrl-Alt-E

Displays the Exceptions dialog

Ctrl-Alt-I

Displays the Immediate window

Ctrl-Alt-V, L

Displays the Locals window

Ctrl-Alt-Q

Displays the Quick Watch dialog

Ctrl-Shift-F5

Terminates the current debugging session, rebuilds if necessary, and starts a new debugging session.

Ctrl-F10

Starts or resumes execution of your code and then halts execution when it reaches the selected statement.

Ctrl-Shift-F10

Sets the execution point to the line of code you choose

Alt-NUM *

Highlights the next statement

F5

If not currently debugging, this runs the startup project or projects and attaches the debugger.

Ctrl-F5

Runs the code without invoking the debugger

F11

Step Into

Shift-F11

Executes the remaining lines out from procedure

F10

Executes the next line of code but does not step into any function calls

Shift-F5

Available in break and run modes, this terminates the debugging session

Ctrl-Alt-H

Displays the Threads window to view all of the threads for the current process

F9

Sets or removes a breakpoint at the current line

Ctrl-Alt-W, 1

Displays the Watch 1 window to view the values of variables or watch expressions

Ctrl-Alt-P

Displays the Processes dialog, which allows you to attach or detach the debugger to one or more running processes

Ctrl-D,V

IntelliTrace Event

ASSERT
它选择二个表明式,假诺这些表达式为TRUE,则无动作,不然中断当前途序推行。对于系统中冒出那几个宏
招致的中止,应该认为你的函数调用未能满意系统的调用此函数的前提条件。譬如,对于二个还不曾开创的窗口调用SetWindowText等。

作者们早已看到“Is True”分选的用场了。“Has Changed”用在当您想在少数值变为有个别特定值的时候停住。

void CForDebugDlg::OnOK()

8.2
Flag Just My Code

a)、在output Debug窗口中得以见到用TRACE打字与印刷的消息

13总结(Summary)


Watch
VC援协助调查看变量、表达式和内部存款和储蓄器的值。全数那几个观测都必得是在断点中断的场所下进展。
见状变量的值最简便,当断点达到时,把光标移动到那几个变量上,停留一会就足以见到变量的值。
VC提供生机勃勃种被改为Watch的机制来见见变量和表明式的值。在断点状态下,在变量上单击右键,接受Quick
Watch, 就弹出叁个会话框,展现那个变量的值。
单击Debug工具条上的Watch按键,就涌出两个Watch视图(Watch1,Watch2,Watch3,Watch4卡塔尔,在该视图中输入变量或许表达式,就能够观察变量或然表明式的值。注意:这么些表明式无法有副成效,举例++运算符相对幸免用来这几个表达式中,因为这一个运算符将修正变量的值,导致软件的逻辑被毁掉。
Memory
鉴于指针指向的数组,Watch只好显示第三个因素的值。为了显示数组的接轨内容,可能要显得一片内部存款和储蓄器的从头到尾的经过,能够使用memory作用。在
Debug工具条上点memory开关,就弹出三个对话框,在里边输入地方,就足以呈现该地点指向的内部存款和储蓄器的内容。
Varibles
Debug工具条上的Varibles按键弹出二个框,展现全体当前实践上下文中可知的变量的值。特别是现阶段命令涉及的变量,以革命呈现。
寄存器
Debug工具条上的Reigsters开关弹出四个框,突显当前的具备寄放器的值。

Visual
Studio调节和测验器提供其余贰个刚劲的功用,支持大家为对象的别的四个一定实例成立一个目的ID(object ID卡塔尔国。那能够用于在其余时间监察和控制任性对象,甚至是该目的位于范围(scope卡塔 尔(英语:State of Qatar)之外。在监视窗口(watch window卡塔尔右击特定对象变量,再单击”Make Object ID“就能够创制Object ID。

c)、查看映射文件:见” 通过崩溃地址寻觅源代码的出错行”文件。

澳门威尼斯人网址 29

断点标签到此介绍完成。作者举的例子特别轻易,不过断点标签在您调节和测验大批量代码,两个工程等情形下格外管用。

澳门威尼斯人网址 30

4.2
Drag-Drop Pin Data Tip

“附加到进度(Attach to Process卡塔 尔(英语:State of Qatar)”是另后生可畏种运行调节和测验的法门。Attach Process会为应用程序运营三个调节委员会话。或然大家更纯熟ASP.NET Web应用的Attach Process调节和测量试验。小编发了其它两篇有关的帖子。如下:

到此本文截止。希望您爱怜本文。请分享你的报告和提出。

澳门威尼斯人网址 31

澳门威尼斯人网址 32

图:
条件文本框的机动补全(intellisense in condition textbox卡塔尔国

3.1.2逐语句(Step Into)

*图:**Autos – Ctrl + D, A***

多少个月前,我发过生龙活虎篇关于VS 2010 DataTip
Debugging Tips的文章。

右击断点,点击编辑标签(Edit Labels卡塔尔国,就能够对随便断点增加标签。对于示例代码,我为保有断点的价签起了轻巧掌握的名字。

3.1.3跳出(Step Out)

仿照效法资料:

澳门威尼斯人网址 33

运维调节和测验(Start Debugging卡塔 尔(英语:State of Qatar)

假令你要调度上面包车型客车代码块:

Step
Over(逐进度卡塔尔国:推行并跳到下一条语句,但不进来上一条语句的代码块

在软件开辟周期中,测量检验和改善缺欠(defect,defect与bug的差异:Bug是毛病的意气风发种表现格局,而八个劣点是可以挑起各个Bug的卡塔尔的时日远多于写代码的日子。日常,debug是指开掘破绽并改善的进度。改过破绽紧随debug之后,只怕说二者是连锁的。假使代码中设有弱点,大家先是要辨识造成破绽的根本原因(root cause卡塔尔,那个进程就称作调节和测量检验(debugging卡塔 尔(阿拉伯语:قطر‎。找到根本原因后,就足以改良缺陷。

你在Console.WriteLine()语句处设置了断点。当推行顺序时,每回for-each循环都会停住。假诺你想让代码只在name=”Name3″时停住,该如何做吧?很简单,你只需选用原则name.Equals(“Name3”)。
澳门威尼斯人网址 34

那是对具有开垦职员来讲无比常用的性状,因而小编就不生龙活虎一介绍即时窗口的每一条命令了。

图:
逐过程(Step Over – F10)

澳门威尼斯人网址 35

class Program   
    {   
        static void Main(string[] args)   
        {   
         string [] strNames = { "Name1","Name2", "Name3", "Name4", "Name5", "Name6"};   

            foreach(string name in strNames)   
            {   
                 Console.WriteLine(name); // Breakpoint is here   
            }   
        }   
    }   

3.1.5
设置下一语句(Set Next
Statement卡塔 尔(英语:State of Qatar)

在对特定指标变量成立Object ID之后,Visual Studio会给这么些指标增多八个数量和”#”号,用来代表。

4多少便签(Data Tip卡塔 尔(英语:State of Qatar)

这一个变量由VS调节和测验器在调整的时候自动检测。VS检查测量检验与当下语句相关的对象或变量,基于此列出Autos变量。Autos Variable的神速键是Ctrl + D + A。

即时窗口是开荒职员常用的功能。它能够在不更换近年来调节和测量试验步骤的动静下修正变量值恐怕实践一些口舌。大家得以因此菜单调试** > 窗口
> 即时(Debug > Window > Immediate
Window**)开采即时窗口。即时窗口援助豆蔻梢头组命令,可在调节和测验的任曾几何时刻实施。它也支撑英特尔lisense。在调度时期,我们可以在这里个时候窗口中实践此外命令只怕代码语句。

澳门威尼斯人网址 36

它疑似重新实践你的主次。它会继续程序的施行直到遇到下叁个断点。神速键是“F5”

图:
设置断点条件

4.1
Pin Inspect Value During Debugging

1 导言

一声令下窗口(Command卡塔 尔(阿拉伯语:قطر‎

它与Step Over相像。唯意气风发的不等是,假诺当前高亮语句是方式调用,调节和测量检验器会进来方式内部。飞速键是“F11”

3.1.6来得下一语句(Show Next Statement [Ctrl+*])

 

3.5断点命中计数(Breakpoint Hit Count卡塔尔国

图:基本即时窗口(Basic Immediate Window卡塔尔

3.1.1逐过程(Step Over)

率先,你供给在您想暂停实行处安装断点。然后右击铁青的断点图标。右键菜单中式茶食击”条件”。

3.1.4继续(Continue)

5.3监视(Watch)

 

2如何运行调节和测量检验?

图:添加Object ID后

Step
Out(跳出卡塔 尔(英语:State of Qatar):实践到代码块结尾

笔者大概讲明了尺度断点的有所内容。除了上边那一点。在规范窗口中有三个挑选:

澳门威尼斯人网址 37

澳门威尼斯人网址 38

那是两个不胜风趣的表征。设置下一语句允许你在调解的时候改换程序的推行路线。即便您的程序在某意气风发行处暂停并且你想改进施行路线,跳到钦定行,在这里豆蔻梢头行上右击,在右击菜单中选取”安装下一语句“。那样程序就能够转到哪豆蔻梢头行试行而不试行先前的代码。这在如下意况中足够平价:当你发当代码中有些行恐怕会产生程序的暂停(break卡塔 尔(阿拉伯语:قطر‎而你不想让程序在特别时候抛锚。连忙键是Ctrl + Shift + F10

11调解常用急忙键(Useful Shortcut Keys For VS
Debugging卡塔 尔(阿拉伯语:قطر‎

图:展开监视变量

9调护医疗并路程序(Debugging Parallel Program卡塔尔国

1第22中学肯学习(Further Study卡塔 尔(阿拉伯语:قطر‎

5.2机动窗口(Autos卡塔尔

澳门威尼斯人网址 39

可以经过VS的调节和测量试验(Debug卡塔 尔(阿拉伯语:قطر‎菜单运营调试。点击调节和测量试验菜单下的”运维调节和测验”只怕按F5键运营。假设您早已在代码中参预了断点,那么推行会自行最初。

10
Debugging with IntelliTrace

“监视N”(Watch):可定制(N从1到4)

“自动窗口”(Autos卡塔 尔(阿拉伯语:قطر‎:当前使用的变量

3断点(Breakpoints)

3.2断点标签(Labeling in Break Point卡塔尔国

图:
调节和测量试验时的数码便签(DataTips During Debugging卡塔 尔(英语:State of Qatar)

图:
使用标签过滤断点(Filter Breakpoint Using Labels卡塔尔

点击右键菜单中的”条件”后,会弹出下边包车型地铁对话框设置断点的基准。

“局地窗口”(Locals卡塔尔国:在界定内的具有变量

5.1片段变量(Locals卡塔尔

上边是风流罗曼蒂克对在调整时有用的风味。

[2]
bug和症结的不一致

翻看断点符号。它应当看上去疑似一个加(+卡塔 尔(英语:State of Qatar)号在断点符号内部,那代表该断点是条件断点。

在筛选准绳中,你能够设置过程名,进度Id,机器名,线程ID等。小编会在四线程调节和测量试验小节中详述其用法。

后生可畏旦你在三番八次迭代(循环卡塔 尔(英语:State of Qatar)管理多少而你只想调节和测量试验当中某五回迭代。那意味你想依照一些特定条件暂停你的次序。Visual Studio断点允许你设置标准断点。当且仅当法则满足时,调节和测量检验器才会停住。

也得以应用拖放(Drag and Drop卡塔 尔(英语:State of Qatar)将变量增多到监视窗口中。从监视窗口中删除变量的方法是,右击变量并精选”Delete Watch”。通过调度窗口,也得以在运作时编辑这一个变量值。

[1] Mastering Debugging
in Visual Studio 2010 – A Beginner’s
Guide

澳门威尼斯人网址 40

相关文章