CN101354675A - 一种嵌入式软件动态内存检测的方法 - Google Patents
一种嵌入式软件动态内存检测的方法 Download PDFInfo
- Publication number
- CN101354675A CN101354675A CNA2008100302612A CN200810030261A CN101354675A CN 101354675 A CN101354675 A CN 101354675A CN A2008100302612 A CNA2008100302612 A CN A2008100302612A CN 200810030261 A CN200810030261 A CN 200810030261A CN 101354675 A CN101354675 A CN 101354675A
- Authority
- CN
- China
- Prior art keywords
- module
- memory
- test
- data
- internal memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种嵌入式软件动态内存检测的方法,将数据采集和数据测试分析相分离,即对涉及动态内存检测所需的数据采集步骤和数据测试分析步骤分别在不同的嵌入式主机进行,且进行数据测试分析的主机与进行数据采集的主机相互连接。本发明为数据采集和测试分离的交叉测试方法,该方法能够准确度、可靠性、及时性的检测嵌入式软件的内存问题,同时保证嵌入式平台资源的利用率。
Description
技术领域
本发明属于嵌入式系统的内存动态检测领域,特别是涉及一种将数据采集和测试分离的交叉测试的方法。
技术背景
随着嵌入式技术的发展,嵌入式应用的不断增长以及嵌入式系统复杂性不断提高,嵌入式软件的规模和复杂性也不断提高,有限的硬件资源和功能越来越强的需求依然是嵌入式软件开发领域的主要矛盾,嵌入式软件必须做到精简高效、稳定可靠。嵌入式软件的质量和开发周期对产品的最终质量和上市时间起到决定性的影响,这使得嵌入式软件的开发、分析与测试成为了研究的热点。
嵌入式软件与个人微机软件有着巨大的差别,这表现在它与硬件关系紧密、内存不丰富,可靠性和实时性要求高的几个方面。嵌入式软件如果出现内存泄漏等问题,势必导致系统可用内存减少,严重的可能引起系统的崩溃。
如何有效管理内存泄露、内存碎片和内存崩溃等问题对嵌入式软件开发变得越来越突出。同时,考虑到嵌入式平台主要利用率的问题,测试应该尽可能的减小开销。
目前,内存使用错误的预防和处理方法分为静态分析和动态分析两类,静态分析工具研制复杂,目前还没有得到广泛使用的高效工具。动态分析又分为源代码插装法(SCI:Source Code Instrument)、目标码插装法(OCI:Object CodeInstrument)和添加保护字节法三类。
SCI法对原始程序进行语法扫描、分析,然后插入检测代码将其转换成新的、等价的源代码,这一过程对用户来说是完全透明的。在整个过程中,原始代码文件没有被修改,也不需要用户的任何介入。加工好的源文件最后被链接成可执行文件,从而为检测程序运行时错误做好准备。
OCI法对每个目标文件和库进行加工,并工作在汇编码级。在链接时,对每个文件进行解码,分析每条指令,发现与内存有关的指令,插入额外的代码以检查内存存取的准确性,并以临时文件的形式建立等价的模块。在所有的模块被改造完毕后,连接成最后的可执行程序。
添加保护字节法在每个内存块的边界添加保护字节,这些额外的字节用来标志该内存块并动态记录内存块的状态。在程序执行过程中,如果程序读写处于围墙上的字节,就被判为错误。同时,通过分析保护字节的信息,可以检测出该内存块是否被释放,从而判断是否发生内存泄漏。同SCI与OCI方法相比,此方法在实现上难度更大一些,而且添加的保护字节要占用大量的内存空间,对于大型的应用程序使用此方法检测效率很低。
常用的动态内存检测工具如Purify、Valgrind、Mpatro、Memtrace,Memprof等都是基于源代码插装法,FENSE则采用了源代码插装法和添加保护字节法相结合的方式。然而这些工具都是在同一个主机上采集和分析数据,对于资源紧缺的嵌入式平台而言,这些测试工具影响系统资源的利用率。
发明内容
本发明的目的在于克服现有技术的不足,提出了一种数据采集和测试分离的交叉测试方法,该方法能够准确度、可靠性、及时性的检测嵌入式软件的内存问题,同时保证嵌入式平台资源的利用率。
为了实现上述发明目的,采用的技术方案如下:
一种嵌入式软件动态内存检测的方法,将数据采集和数据测试分析相分离,即对涉及动态内存检测所需的数据采集步骤和数据测试分析步骤分别在不同的嵌入式主机进行,且进行数据测试分析的主机与进行数据采集的主机相互连接。
上述技术方案中,进行数据测试分析为开发机,开发机上设置有内存探测模块和插装库,进行数据采集为目标机,目标机上设置测试代理模块,所述内存探测模块集成于Eclipse平台,包括通信模块、数据管理模块、显示模块,所述通信模块与目标机上的测试代理模块建立连接,所述数据管理模块通过通信模块向测试代理模块发送可执行文件,并接收测试代理模块执行文件过程中发送过来的数据,所述显示模块进行分析数据和图形显示。
所述目标机的测试代理模块包括接收和执行文件模块、微观测试模块、宏观测试模块三部分,所述接收和执行文件模块与开发机建立通信,接收在开发机上经过交叉编译生成的可执行文件,并把微观测试模块和宏观测试模块获得的数据传输给开发机,所述微观测试模块捕捉可执行文件的内存操作行为,所述宏观测试模块根据嵌入式系统内存的变化判断是否出现内存问题。
所述插装库是内存信息统计库,在开发机上和被测试文件一起交叉编译生成可执行文件。
本发明具体包括如下步骤:
(1)嵌入式软件在开发机上进行交叉编译,把插装库和嵌入式软件一起编译生成相对于目标机的可执行文件;
(2)开发机上的内存探测模块把可执行文件发送到目标机上,目标机通过测试代理模块的接收和执行文件模块接收并且执行相应的文件;
(3)在目标机上执行可执行文件的同时,微观测试模块和宏观测试模块收集数据,再通过测试代理模块把数据发送给开发机,开发机上的数据管理模块接收数据,再通过显示模块进行分析,并显示分析结果。
步骤(1)中插装库是源代码插装库,这个库主要是用来统计内存操作信息,嵌入式软件一般都要通过编译链交叉编译生成可执行文件;
步骤(2)中,开发机和目标机之间通过TCP/IP协议建立连接;
步骤(3)中的微观测试模块和宏观测试模块负责采集目标机数据,但是不进行分析,具体分析操作是开发机的显示模块负责,这样做的目的大大减少了测试开销。
假设T执行表示被测试文件执行时间;T采集表示采集数据时间;T分析表示分析数据时间;T传输表示传输时间;如果数据采集和测试都在目标机上,那么总的时间为T总=T执行+T采集+T分析为目标机的开销。如果数据采集和测试分离,即数据采集在目标机上而分析在开发机上,那么目标机的总开销为T总=T执行+T采集+T传输。比较T分析和T传输之间大小,实验表明,对于大型嵌入式软件,传输数据时间比分析数据时间要小很多。并且如果在目标机上分析数据,还占用平台资源。这对于资源紧缺的嵌入式平台是不可以接受的。
所述微观测试模块收集数据通过执行文件里的插装库实现,插装库通过改写嵌入式操作系统下的涉及内存操作函数,包括在这些函数里增加把对内存操作的信息发送到开发机上的代码,插装库里改写函数通过调用嵌入式操作系统标准库stdlib的内存操作函数实现,具体如下:
如果涉及内存操作函数,会被插装库的函数替换,接着调用目标机上标准库stdlib里面的相应函数;
如果涉及申请内存函数,那么就把申请成功内存的开始地址存入全局链表,出错就报错;
如果是释放内存函数,就搜索全局链表看是否存在该内存,如果没有就报错;
最后,获得内存操作的信息,保存起来,再发送给测试代理模块;
插装库设置一个全局链表List,当申请内存时,保存每次申请到的内存的地址;当释放内存时,在链表里面搜索给定内存的地址,然后从链表里面删除,从而保证数据一致性。
所述宏观检测模块先从宏观上判断一个进程是否存在内存泄漏,其通过获得应用程序堆空间,虚拟内存和实际内存的变化,来判断是否出现内存问题,具体操作如下:
测试代理模块执行被测试程序,获得被测试程序的进程号,再把这个进程号传送给内核态的宏观测试模块的kernel_user模块;
根据这个进程号,宏观测试模块的kernel_user模块搜索整个进程链表,找到相应的进程控制块PCB,所述进程链表保存在嵌入式操作系统的内核中;
根据进程控制块PCB获取进程的所有内核态信息,包括内存信息,同时把获得的内存信息写入字符设备驱动文件,
最后,应用态的测试代理模块读取字符设备驱动文件里面的数据,并且发送给开发机。
本发明为将数据采集和测试分离的交叉测试方法,实现嵌入式动态内存检测的优越性如下:
1、节省嵌入式平台CPU的处理时间,让CPU有更多的时间处理别的时间,提高CPU的利用率;
2、保证嵌入式平台资源利用率;
3、能够及时的,准确的,可靠的发现嵌入式软件内存问题;
4、非常直观的图形化界面,方便开发人员观察嵌入式软件存在的问题,而不需要等到程序结束或者强制退出。
附图说明
图1为本发明的架构逻辑示意图;
图2为本发明的微观测试示意图;
图3为本发明的宏观测试示意图;
图4为本发明的宏观测试具体实施示意图。
具体实施方式
本发明实施于嵌入式开发平台,嵌入式开发涉及到开发机和嵌入式平台,把开发机称为(Service),嵌入式平台称为目标机(Client)。
附图1嵌入式软件动态内存检测工具的总体架构,该图显示了Service端和Client端的各个模块。Service上主要是包含内存探测模块和插装库;Client上主要包含测试代理。具体如下分析:
Service上的源代码和插装库通过编译链交叉编译生成可执行文件,这里的插装库主要是为测试代理的微观测试模块统计数据,虽然这个模块是在Service上,但是它具体应用还是为Client上的测试代理的微观测试采集数据;
集成在Eclipse上内存探测模块的通信模块通过TCP/IP协议和Client建立连接,生成的可执行文件被数据管理模块发送到Client上的测试代理,其中的接收和执行文件模块接收文件,并且执行。
文件在Client端执行,测试代理里的微观测试和宏观测试二个模块采集数据,再发送到内存探测的数据处理模块收集,最后显示模块定时的分析数据,并且通过直观的图形显示结果。
附图2展示了嵌入式软件动态内存检测工具微观测试,这个模块主要是利用了插装库,该库相当于是一个优先加载库。在Linux下设置环境变量LD_PRELOAD为插装库就可以完成对这个库的优先加载。插装库通过改写malloc(),realloc(),calloc(),free()等函数,在这些函数里包装的是把对内存操作的信息发送到开发机上的代码,插装库里修改的函数最终还是调用标准库(stdlib)的malloc(),free(),calloc(),free()等函数。具体分析如下:
如果是内存操作函数,会被插装库的函数替换,接着调用Client上标准库(stdlib)里面的相应函数;
如果是申请内存函数,那么就把申请成功内存的开始地址存入全局链表,出错就报错;如果是释放内存函数,就搜索全局链表看是否存在该内存,如果没有就报错;
最后,获得内存操作的信息,保存起来,再发送给测试代理。
插装库有一个非常重要全局链表List,当申请内存时,保存每次申请到的内存的地址;当释放内存时,在链表里面搜索给定内存的地址,然后从链表里面删除,从而保证数据一致性。
嵌入式软件动态内存检测工具微观测试主要是是设计了二个比较重要的函数malloc()和free(),其他的函数可以根据这二个函数的思想来完成,设计思想为:
1、malloc()函数实现,
设置函数类型,主要是方便开发机分析;
前后多分配MSS_WATCH_SIZE字节,并且写入特殊的值;
把申请成功的内存开始地址保存到全局链表;
统计信息,包括调用malloc()函数的文件名,函数名,行号,申请时间,具体大小,进程号等信息。在发送给测试代理。
2、free()函数实现
设置函数类型;
搜索全局链表,如果找到了相应的地址,那么就调用标准库里面的free函数,释放空间;如果失败,报错;
统计信息,包括调用malloc()函数的文件名,函数名,行号,申请时间,具体大小,进程号等信息。在发送给测试代理;
其中_FILE_,_PRETTY_FUNCTION_,_LINE_是Linux下的宏,用来获得文件名,函数名,以及行号。MSS_BY_MALLOC和MSS_BY_FREE用来区别函数类型。
附图3展示了嵌入式软件动态内存检测工具宏观测试,所谓宏观检测是指先从宏观上确定一个进程有没有内存泄漏,而不考虑这个进程泄漏内存的具体信息。从宏观上看,如果进程有内存泄漏的话,它占用的内存就会不断的增大,那么它占用内存的最大值就会不断的被刷新。应用程序一般都是在堆上申请内存,所以通过获得应用程序堆空间,虚拟内存和实际内存的变化,来判断是否出现内存问题。这个模块跟操作系统有密切的关系,需要获得内核数据结构的实时数据,内核态和用户态数据交互:
测试代理执行被测试程序,获得被测试程序的进程号,再把这个进程号传送给内核态的宏观测试的kernel_user模块;
根据这个进程号,宏观测试的kernel_user模块搜索整个进程链表(内核用于保存所有进程号的链表),找到相应的进程控制块(PCB);
根据进程控制块(PCB),具体可以获取进程的所有内核态信息,包括内存信息。同时把获得的内存信息写入字符设备驱动文件;
最后,应用态的测试代理就可以读这个字符设备驱动文件里面的数据,并且发送给开发机。
附图4为嵌入式软件动态内存检测工具宏观测试具体实施,内核里面有二个主要的数据结构task_struct(PCB)和mm_struct,由于这二个结构体成员变量比较多,这里只说明对测试有用的成员。宏观测试模块下的kernel_user模块获得进程号后就可以找到相应PCB,PCB结构体mm成员是指向mm_struct结构体的指针。mm_struct结构体包含了进程的内存使用情况,具体包括:虚拟内存大小,实际内存大小,分配堆空间大小等。
Claims (7)
1、一种嵌入式软件动态内存检测的方法,其特征在于将数据采集和数据测试分析相分离,即对涉及动态内存检测所需的数据采集步骤和数据测试分析步骤分别在不同的嵌入式主机进行,且进行数据测试分析的主机与进行数据采集的主机相互连接。
2、根据权利要求1所述的嵌入式软件动态内存检测的方法,其特征在于进行数据测试分析为开发机,开发机上设置有内存探测模块和插装库,进行数据采集为目标机,目标机上设置测试代理模块,所述内存探测模块集成于Eclipse平台,包括通信模块、数据管理模块、显示模块,所述通信模块与目标机上的测试代理模块建立连接,所述数据管理模块通过通信模块向测试代理模块发送可执行文件,并接收测试代理模块执行文件过程中发送过来的数据,所述显示模块进行分析数据和图形显示。
3、根据权利要求2所述的嵌入式软件动态内存检测的方法,其特征在于所述目标机的测试代理模块包括接收和执行文件模块、微观测试模块、宏观测试模块三部分,所述接收和执行文件模块与开发机建立通信,接收在开发机上经过交叉编译生成的可执行文件,并把微观测试模块和宏观测试模块获得的数据传输给开发机,所述微观测试模块捕捉可执行文件的内存操作行为,所述宏观测试模块根据嵌入式系统内存的变化判断是否出现内存问题。
4、根据权利要求2或3所述的嵌入式软件动态内存检测的方法,其特征在于所述插装库是内存信息统计库,在开发机上和被测试文件一起交叉编译生成可执行文件。
5、根据权利要求4所述的嵌入式软件动态内存检测的方法,其特征在于具体包括如下步骤:
(1)嵌入式软件在开发机上进行交叉编译,把插装库和嵌入式软件一起编译生成相对于目标机的可执行文件;
(2)开发机上的内存探测模块把可执行文件发送到目标机上,目标机通过测试代理模块的接收和执行文件模块接收并且执行相应的文件;
(3)在目标机上执行可执行文件的同时,微观测试模块和宏观测试模块收集数据,再通过测试代理模块把数据发送给开发机,开发机上的数据管理模块接收数据,再通过显示模块进行分析,并显示分析结果。
6、根据权利要求5所述的嵌入式软件动态内存检测的方法,其特征在于所述微观测试模块收集数据通过执行文件里的插装库实现,插装库通过改写嵌入式操作系统下的涉及内存操作函数,包括在这些函数里增加把对内存操作的信息发送到开发机上的代码,插装库里改写函数通过调用嵌入式操作系统标准库stdlib的内存操作函数实现,具体如下:
如果涉及内存操作函数,会被插装库的函数替换,接着调用目标机上标准库stdlib里面的相应函数;
如果涉及申请内存函数,那么就把申请成功内存的开始地址存入全局链表,出错就报错;
如果是释放内存函数,就搜索全局链表看是否存在该内存,如果没有就报错;
最后,获得内存操作的信息,保存起来,再发送给测试代理模块;
插装库设置一个全局链表List,当申请内存时,保存每次申请到的内存的地址;当释放内存时,在链表里面搜索给定内存的地址,然后从链表里面删除,从而保证数据一致性。
7、根据权利要求5所述的嵌入式软件动态内存检测的方法,其特征在于所述宏观检测模块先从宏观上判断一个进程是否存在内存泄漏,其通过获得应用程序堆空间,虚拟内存和实际内存的变化,来判断是否出现内存问题,具体操作如下:
测试代理模块执行被测试程序,获得被测试程序的进程号,再把这个进程号传送给内核态的宏观测试模块的kernel_user模块;
根据这个进程号,宏观测试模块的kernel_user模块搜索整个进程链表,找到相应的进程控制块PCB,所述进程链表保存在嵌入式操作系统的内核中;
根据进程控制块PCB获取进程的所有内核态信息,包括内存信息,同时把获得的内存信息写入字符设备驱动文件,
最后,应用态的测试代理模块读取字符设备驱动文件里面的数据,并且发送给开发机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100302612A CN101354675B (zh) | 2008-08-19 | 2008-08-19 | 一种嵌入式软件动态内存检测的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008100302612A CN101354675B (zh) | 2008-08-19 | 2008-08-19 | 一种嵌入式软件动态内存检测的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101354675A true CN101354675A (zh) | 2009-01-28 |
CN101354675B CN101354675B (zh) | 2011-01-19 |
Family
ID=40307492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008100302612A Expired - Fee Related CN101354675B (zh) | 2008-08-19 | 2008-08-19 | 一种嵌入式软件动态内存检测的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101354675B (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930466A (zh) * | 2010-08-31 | 2010-12-29 | 北京捷通华声语音技术有限公司 | 跨平台内存文件的管理方法及管理系统 |
CN101937392A (zh) * | 2010-08-27 | 2011-01-05 | 华南理工大学 | 一种嵌入式软件动态缺陷检测方法 |
CN101944060A (zh) * | 2010-09-10 | 2011-01-12 | 华南理工大学 | 一种基于嵌入式软件的细粒度检测方法 |
CN102866948A (zh) * | 2012-08-30 | 2013-01-09 | 中国人民解放军63928部队 | 一种嵌入式基础软件测试平台及其测试方法 |
CN103279360A (zh) * | 2013-06-09 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 一种用基于Linux命令的程序获取内存信息的方法 |
CN103744775A (zh) * | 2012-08-13 | 2014-04-23 | 德克萨斯仪器股份有限公司 | 测试用例崩溃恢复 |
CN104461880A (zh) * | 2014-12-04 | 2015-03-25 | 福建星网视易信息系统有限公司 | 一种嵌入式系统中自动检测内存越界的方法及系统 |
CN105224433A (zh) * | 2014-06-23 | 2016-01-06 | 阿里巴巴集团控股有限公司 | 一种内存监控方法及服务器 |
CN107247671A (zh) * | 2017-07-03 | 2017-10-13 | 郑州云海信息技术有限公司 | 一种数据获取方法及装置 |
CN107315679A (zh) * | 2017-05-12 | 2017-11-03 | 昆明奥多智能科技有限公司 | 一种嵌入式软件自动化确认测试方法及测试系统 |
CN113282430A (zh) * | 2020-12-03 | 2021-08-20 | 延锋伟世通电子科技(南京)有限公司 | 一种防止嵌入式系统内存泄露的方法 |
-
2008
- 2008-08-19 CN CN2008100302612A patent/CN101354675B/zh not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937392A (zh) * | 2010-08-27 | 2011-01-05 | 华南理工大学 | 一种嵌入式软件动态缺陷检测方法 |
CN101930466A (zh) * | 2010-08-31 | 2010-12-29 | 北京捷通华声语音技术有限公司 | 跨平台内存文件的管理方法及管理系统 |
CN101930466B (zh) * | 2010-08-31 | 2012-08-15 | 北京捷通华声语音技术有限公司 | 跨平台内存文件的管理方法及管理系统 |
CN101944060A (zh) * | 2010-09-10 | 2011-01-12 | 华南理工大学 | 一种基于嵌入式软件的细粒度检测方法 |
CN103744775A (zh) * | 2012-08-13 | 2014-04-23 | 德克萨斯仪器股份有限公司 | 测试用例崩溃恢复 |
CN102866948A (zh) * | 2012-08-30 | 2013-01-09 | 中国人民解放军63928部队 | 一种嵌入式基础软件测试平台及其测试方法 |
CN102866948B (zh) * | 2012-08-30 | 2015-04-15 | 中国人民解放军63928部队 | 一种嵌入式基础软件测试平台及其测试方法 |
CN103279360A (zh) * | 2013-06-09 | 2013-09-04 | 浪潮电子信息产业股份有限公司 | 一种用基于Linux命令的程序获取内存信息的方法 |
CN105224433A (zh) * | 2014-06-23 | 2016-01-06 | 阿里巴巴集团控股有限公司 | 一种内存监控方法及服务器 |
CN105224433B (zh) * | 2014-06-23 | 2018-04-10 | 阿里巴巴集团控股有限公司 | 一种内存监控方法及服务器 |
CN104461880A (zh) * | 2014-12-04 | 2015-03-25 | 福建星网视易信息系统有限公司 | 一种嵌入式系统中自动检测内存越界的方法及系统 |
CN107315679A (zh) * | 2017-05-12 | 2017-11-03 | 昆明奥多智能科技有限公司 | 一种嵌入式软件自动化确认测试方法及测试系统 |
CN107247671A (zh) * | 2017-07-03 | 2017-10-13 | 郑州云海信息技术有限公司 | 一种数据获取方法及装置 |
CN113282430A (zh) * | 2020-12-03 | 2021-08-20 | 延锋伟世通电子科技(南京)有限公司 | 一种防止嵌入式系统内存泄露的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101354675B (zh) | 2011-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101354675B (zh) | 一种嵌入式软件动态内存检测的方法 | |
US8584098B2 (en) | Component statistics for application profiling | |
US8850403B2 (en) | Profiling data snapshots for software profilers | |
EP3072051B1 (en) | Diagnosing production applications based on process snapshots | |
US8336033B2 (en) | Method and system for generating a hierarchical tree representing stack traces | |
US6311327B1 (en) | Method and apparatus for analyzing software in a language-independent manner | |
US8601469B2 (en) | Method and system for customizing allocation statistics | |
US9129056B2 (en) | Tracing values of method parameters | |
EP1172729B1 (en) | Apparatus and method for cataloguing symbolic data for use in performance analysis of computer programs | |
US6658416B1 (en) | Apparatus and method for creating an indexed database of symbolic data for use with trace data of a computer program | |
US8522209B2 (en) | Method and system for integrating profiling and debugging | |
US6678883B1 (en) | Apparatus and method for creating a trace file for a trace of a computer program based on loaded module information | |
US7904493B2 (en) | Method and system for object age detection in garbage collection heaps | |
EP2442230B1 (en) | Two pass automated application instrumentation | |
US7150006B2 (en) | Techniques for managed code debugging | |
US6766511B1 (en) | Apparatus and method for performing symbolic resolution of modules using static representations of a trace | |
US20110138363A1 (en) | Combining method parameter traces with other traces | |
US7900198B2 (en) | Method and system for parameter profile compiling | |
US20080134148A1 (en) | Method and Apparatus for Tracing Execution of Computer Programming Code Using Dynamic Trace Enablement | |
JPH09218800A (ja) | 組込みシステム中で実行されるソフトウェアを分析するための方法および装置 | |
US6708169B1 (en) | Apparatus and method for generating a merged symbol file for verifying symbolic data | |
US20090100413A1 (en) | Stack Walking Enhancements Using Sensorpoints | |
US20180260304A1 (en) | Mapping dynamic analysis data to source code | |
EP3635561B1 (en) | Asynchronous operation query | |
CN117992359B (zh) | 服务化软件的观测方法、装置和电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110119 Termination date: 20170819 |