首页 / 知识
什么是动态代码分析?
2023-04-14 13:50:00

What is Dynamic Code Analysis?什么是动态代码分析? 它与"静态代码分析"有什么不同(即,它可以捕获哪些不能在静态中捕获)? 我听说过边界检查和内存分析-这些是什么? 使用动态分析检查其他哪些内容? -亚当 简单地说,静态分析基于源代码收集信息,而动态分析则基于系统执行(通常使用检测工具)。 动态分析的优势
动态分析的缺点
资源 市场上有许多动态分析工具,它们是最臭名昭著的调试器。另一方面,它仍然是一个学术研究领域。有许多研究人员正在研究如何使用动态分析来更好地理解软件系统。有一个年度研讨会专门研究依赖性分析。 基本上,您可以检测代码以分析软件的运行状态(动态),而不仅仅是分析软件而不运行(静态)。另请参见此JavaOne演示文稿,将两者进行比较。 Valgrind是用于C的示例动态分析工具。您还可以使用代码覆盖率工具(例如Cobertura或EMMA)进行Java分析。 来自Wikipedia对动态程序分析的定义:
您要求对"边界检查和内存分析"问题做出很好的解释。 我们的内存安全检查工具会检测您的应用程序,以在运行时监视内存访问错误(缓冲区溢出,数组下标错误,指针错误,分配/空闲错误)。链接包含 中的错误点。 一个更简单的示例:臭名昭著的C(和C)不检查对数组的访问,以查看访问是否在数组的边界之内。好处:精心设计的程序无需在生产模式下支付此类检查的费用。缺点:有缺陷的程序可能会触及数组外部的东西,这会导致难以理解的行为;因此,越野车程序很难调试。 诸如内存安全检查器之类的动态检测工具所执行的操作是将一些元数据与每个指针相关联(例如,指针"指向"对象的类型,如果是数组,则数组边界),然后在运行时检查通过数组指针的任何访问,是否违反了数组绑定。该工具修改原始程序以收集生成元数据的位置(例如,在声明数组的作用域时输入,或者作为malloc操作的结果等),并在每个数组引用处修改程序(将两者写入作为x [y],其中x或y是数组指针,并且值是某种整数类型,对于*(xy)!类似)以检查访问。现在,如果程序运行并执行越界访问,检查将捕获该错误,并在可以检测到该错误的第一个位置报告该错误。 [如果考虑一下,您将意识到元数据收集和检查的工具必须非常聪明,以处理C之类的语言可能遇到的所有变体情况。实际上很难使其完全工作)。 好消息是,现在已经报告了这种访问方式,因此更容易检测到问题并修复程序。此类工具并非预期用于生产用途;在开发和测试过程中使用一种方法来帮助验证是否存在错误。如果没有发现错误,则可以正常编译并运行程序而无需检查。 这是动态分析工具的一个非常好的示例:测试在运行时进行。
这意味着对数组访问进行运行时检查。与C的内存访问和指针算术的自由放任方式相反,其他语言(例如Java或C#)实际上检查给定数组是否具有一个正在尝试访问的元素。 |
最新内容
相关内容
linux查看动态命令?
linux查看动态命令?,系统,状态,工具,实时,时间,命令,工作,信息,地址,百分比,linux怎样使用top命令查看系统状态1、t:切换显示进程和CPU状态信息linux动态链接库命令?
linux动态链接库命令?,代码,项目,工程,电脑,网上,文件,程序,静态,命令,目录,如何在linux下写动态链接库并卖给别人1、执行qmake main.pro生成mlinux动态执行命令?
linux动态执行命令?,时间,信息,名字,工作,网上,业务,工具,对比,地址,下来,如何在linux下让一个命令一直运行,然后跟踪结果日志1、编写一个shellinux命令行动态输出?
linux命令行动态输出?,标准,工作,信息,系统,命令,地址,文件,数据,管理,设备,linux命令输出到屏幕的同时保存到文件su -c command output.txtlinux文字动态命令?
linux文字动态命令?,系统,工作,地址,工具,管理,网络,命令,分析,目录,代码,Linux命令大全1、linux常用命令有pwd命令、cd命令、ls命令、cat命令python的动态类型
python的动态类型,代码,系统,类型,技术,培训,语言,静态,动态,错误,大发,为了理解动态类型,最好先理解其反面——静态类型。静态类型语言有C、JPython常用的高级用法之怎么动态创
Python常用的高级用法之怎么动态创建类,模具,产品,代码,名称,培训,灵活,基础,概念,资料,新世界,元类是Python当中的高级用法,如果你之前从来没Python的动态类型
Python的动态类型,数据,数字,对象,情况,对比,培训,赋值,字符串,元素,整数,在我们接触的对象中,有一类特殊的对象,是用于存储数据的。常见的该类Python动态变量名定义与调用
Python动态变量名定义与调用,代码,培训,变量,动态,赋值,空间,字典,函数,属性,定义,动态变量名赋值在使用tkinter时需要动态生成变量,如动态生关于日期时间:日期时间格式的动态正
关于日期时间:日期时间格式的动态正则表达式,关于日期时间:日期时间格式的动态正则表达式,日期,模式,时间格式,动态创建,Dynamic regex这里有没有人喜欢他们喜欢的Java W
这里有没有人喜欢他们喜欢的Java Web应用程序使用的最喜欢的内存分析/内存泄漏工具?,这里有没有人喜欢他们喜欢的Java Web应用程序C#动态事件订阅
C#动态事件订阅,C#动态事件订阅,事件,对象,字符串,动态,C# Dynamic Event Subscription您将如何动态订阅C#事件,以便在给定对象实例和包