c代码测试工具_C语言工具开发渗透测试

hacker|
214

请帮我推荐几个比较智能的C语言开发工具,有代码提示的那种,谢谢

您好,1、VC6:这个是最经典的一个C/C++开发工具,毕竟是微软的东西,所以非常好用。不过VC6的主要缺点是体积太大,有的同学是在网吧、学校机房等场合学习编程,如果电脑上没有VC6的话就需要下载(安装包要500MB左右)、安装,非常耗时。而且VC6和Vista系统、卡巴斯基等软件有冲突,经常崩溃。毕竟是98年的软件了,微软已经不提供支持了。

2、VC2005/VC2008:也被称为VC7,它是VC6的升级版本,支持新的C/C++语法标准以及新的库文件。同时VC7继承了VC6的所有优点,而且继承并发扬了VC6体积大的“优点”,一个安装包最小也要1G,完整安装要3G。

3、Dev C++:曾经非常牛气的一个免费的C/C++开发工具,体积非常小,只有9M多一点,代码高亮、自动完成等都做的非常好。不过Dev C++稳定性不是很好,经常崩溃,而且Dev C++最近一次更新是在2005年,可以看到作者已经放弃了这个软件,因此那些Bug也无法被修改了。Dev C++有官方中文语言包。

4、Code::Blocks:目前最如日中天的开源且免费的C/C++开发工具,跨平台,可以在Windows/Linux等平台下运行,体积比较小,只有不到20M。Code::Blocks一直在飞速发展,因此支持最新的C/C++语法和最新的库文件。因此很多专业开发人员都推荐使用Code::Blocks。不过Code::Blocks的代码智能提示和自动完成功能做的不是很好,这恰恰是对于初学者来说比较重要的地方。而且Code::Blocks没有官方中文语言包,满屏幕的英文对于初学者来说难度比较大。

5、C-Free:国产的C/C++开发工具。体积非常小,只有不到9M。C-Free的代码智能提示和自动完成、代码高亮以及代码导航等功能做的非常好,可以说是无可挑剔,这对初学者来说是最重要的;C-Free的启动速度也非常快。国产软件肯定是中文界面了,:)。

6、Pelles C:非常强大的C语言开发工具。比C-Free还好用,不过缺点是没有中文版的。

C语言中编译 生成 调试 测试 运行各是什么意思有什么区别

C语言中编译 生成 调试 测试 运行的区别如下:

区别一:

从编译方面来看:

编译依赖于编译器,英文是compile, vc中这一过程是将源代码转换成目标文件,如:obj文件,rc文件等。

区别二:

从生成方面来看:

生成指的是连接的过程,英文是build,依赖于链接器。vc中在这一阶段将所有的目标文件和所有需要用到的组件组合成一个整体,例如需要生成的是windows系统下的PE可执行文件,链接器会依照特定格式将目标文件组合,最后生成PE格式的,exe或dll文件。

区别三:

从调试方面来看:

调试是所有或部分代码编写完成后,让程序在调试器中运行,用这种手段对程序进行分析,找出并修正潜在问题。

区别四:

从运行方面来看:

运行就是让程序在系统中运行。

扩展资料:

C语言的介绍:

C语言是目前流行的通用程序设计语言,是计算机专业人员和计算机爱好者开发软件的首选开发工具。C语言源程序必须经过某种编译工具翻译成为目标机器语言程序才能够在计算机上执行。

然而随着程序编写规模的扩大,顺利编写出正确的程序绝非一件容易的事情,早期的许多编译工具仅仅提供翻译功能,已满足不了应用的要求,编程人员需要-种功能全面并高度集成的编译环境。

程序是一段具有一定功能的代码,编写程序的目的是解决问题。当程序人员写完程序后,其实并不起作用,只有当编写的程序经过一系列的处理后,能够解决问题时。

序才成为真正的程序,这一系列的处理过程,-般就是编辑、编译、连接、调试与运行等。目前最成熟的C语言集成环境主要有Turbo C2.0和Turbo C 3.0( 简称TC30)或Borland C++3.1( 简称BC31)以及Visual C++ 6.0。

C语言中用ASSERT调试的八大技巧

技巧1:记住ASSERT的定义

对许多开发人员来说,断言是一个令人困惑的话题,因为它们的许多使用方式与其设计初衷背道而驰。我见到的最清晰的断言定义是这样的:

“断言是在程序某个特定点的一个布尔表达式,除非程序中有缺陷(Bug),否则它的值将为真。”

想要理解上述断言定义的开发人员应该留意下面三个要点:

·断言会评估一个表达式是真还是假

·断言是在代码中的某个点对系统状态的一种假设

·断言会验证系统假设,如果不为真,就表明代码中有一个缺陷

技巧2:使用ASSERT验证函数的先决条件

断言非常适合契约式设计环境,在这种环境中,开发人员非常清晰地定义了某个函数的先决条件。断言可以用来检查该函数的输入是否满足先决条件。就拿图1所示的代码片段为例:

图1:函数的先决条件

函数的STate输入应该在定义的系统状态范围内。如果State不是有效的状态值,那么它就不是错误,而是缺陷!断言可以用来验证State是有效的假设,如图2所示:

图2:对函数先决条件应用断言

在State不小于最大值的事件中,断言表达式将被评估为假,程序于是将停止执行。停止程序执行可以让开发人员很容易马上看到哪里的代码出错,而不是过段时间以后才知道。

技巧3:使用ASSERT验证函数的后置条件

断言也能用来验证契约式设计环境中对某个函数输出的假设。例如,如果前面定义的System_StateSet函数返回SystemState变量,开发人员可以预计它也在期望的范围之内。断言可以用来对缺陷进行监视,如图3所示。

图3:对函数后置条件应用断言

开发人员在查看上述代码后可能会感到这些检查毫无意义。刚刚才设置好的SystemState怎么就会出现大于SYSTEM_STATE_MAX的值呢?答案是这确实不应该出现,然而有时候会莫名其妙地发生改变,也许是通过中断或并行线程,此时断言可以立即标志出这个缺陷。

技巧4:不要把ASSERT用于错误处理

在记住断言定义之后,开发人员应该切记:断言是用于检测缺陷的,不能用于错误处理。错误处理是设计用于响应错误的用户输入和意外的事件顺序的软件。错误在系统中预料是会发生的,但仅仅是因为有无效的输入而并不意味着代码中有缺陷。错误处理应该与缺陷寻找分开来。错误使用断言的一个典型例子是,在试图打开一个文件用于读取时去检查文件的指针,如图4所示。

图4:ASSERT的不当使用

读者可以清楚地看到,试图打开文件的结果与文件系统的状态和用户数据有关,而与代码中的缺陷一点关系也没有。开发人员应该编写错误处理程序,而不是用断言,以便在文件不存在时,错误处理程序可以用一些默认可用数据来创建它,以便后续代码继续操作。

技巧5:ASSERT仅对开发有意义,不能用于生产

开发ASSERT宏的原始意图是在开发过程中启用它,在后面生产时要禁用。可以用NDEBUG宏激活和禁用ASSERT。正确实施的断言在被禁用后应该对嵌入式系统基本没有影响。

问题是,如果测试是在断言启用的情况下进行的(为了捕捉任何缺陷,应该这样做),那么现在禁用断言将导致交付的产品与测试的产品处于不同的状态。断言确实会占用一些代码空间,但更重要的是,它们需要占用少量的时钟周期来评估它们的布尔表达式。禁用ASSERT可能对具有有限资源的裸机系统的执行时序产生很大影响,从而导致在生产系统中产生新的缺陷。开发团队需要判断是否值得冒关闭断言的.风险。

一种替代方案是保留断言在激活状态,而将它们的输出重定向到一个系统日志。这样可以确保任何挥之不去的缺陷很容易被识别,而且能避免中止系统的运行,而中止系统可不是明智之举。

技巧6:不允许断言有副作用

ASSERT的默认实现允许开发人员包含一段可执行代码作为布尔表达式的一部分。举例来说,一个状态变量可以被实现为表达式的一部分并传递给ASSERT。但如果传递给ASSERT的表达式有副作用,也就是说,它会改变嵌入式系统的状态,那么禁用断言将改变系统的行为。开发人员应该确保他们的表达式没有副作用,否则他们需要冒险在系统中增加只针对产品代码唤醒的休眠时间缺陷。

技巧7:断言应该占代码的1%至3%

每个开发人员对于代码库(Code Base)中应该有多少个断言都有自己的主见。大家一致同意的一个数字是,代码库中的断言占比应该大于0。断言为开发人员提供了一种在代码库中发生缺陷的时刻发现它的好方法。调试是在开发嵌入式系统中最浪费时间并令人沮丧的事情之一。不管开发人员认可的占比是1%、3%还是5%,使用断言肯定对你有利,并会使开发嵌入式软件变得多少有些趣味。

技巧8:将断言用作可执行代码注释

断言可以生成极好的注释!编写出色的表达式可以确切地告诉开发人员在代码的某个给定点应该预料发生什么事情。开发人员应该做好他们断言的架构,帮助人们更清楚地理解系统中发生的事情,进而帮助减少缺陷。

小结

断言是一种出色的工具,但有太多的嵌入式软件开发人员忽视了这一工具。本文讨论的八个技巧只是如何正确使用断言的冰山一角。接下来读者就可以在测试平台中建立和开始使用断言,并研究它们在实际的嵌入式系统中是如何工作的。

0条大神的评论

发表评论