CN1564137A - 一种嵌入式系统多任务并发调试的方法 - Google Patents
一种嵌入式系统多任务并发调试的方法 Download PDFInfo
- Publication number
- CN1564137A CN1564137A CN 200410026825 CN200410026825A CN1564137A CN 1564137 A CN1564137 A CN 1564137A CN 200410026825 CN200410026825 CN 200410026825 CN 200410026825 A CN200410026825 A CN 200410026825A CN 1564137 A CN1564137 A CN 1564137A
- Authority
- CN
- China
- Prior art keywords
- function
- recording areas
- stack trace
- storehouse
- trace recording
- 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
技术领域
本发明涉及通讯领域中一种嵌入式系统多任务并发调试的方法。
背景技术
在嵌入式操作系统上开发的软件中,如通信软件,大量使用状态机处理机制,传统的调试方法可概括为如下过程:设断点--程序暂停--观察程序状态--继续运行。但传统的设置断点进行调试的方法费时费力,如要看一条消息是否到来,需要在该消息的处理函数中设置断点,等待该消息到来,消息到来时,程序断住,再单步跟踪,观察是否和设计一致。而且,在断点停住后,由于多任务系统的并发性,程序断住后和程序全速运行时的环境可能不一致;另外当程序出现异常或者符合表等信息丢失时,一般就不能再设置断点,调试就不能继续了。
另一方面,目前有一些商用的嵌入式软件覆盖测试工具,如CodeTEST,它是一种通用的测试和性能分析工具,但不能很好地适用于程序调试阶段,因为:首先,CodeTEST的成本比较昂贵,不可能每个开发人员都用CodeTEST来调试程序;其次,CodeTEST需要硬件配合,操作也不方便。
因此,现有技术还存在有缺陷,而有待于改进和发展。
发明内容
本发明所要解决的技术问题是:为了克服现有软件调试技术不能很好地适用于多任务并发调试;以及克服软件运行异常的情况下进行事后分析需要借助硬件分析的缺点。
本发明的技术方案如下:
一种嵌入式系统多任务并发调试的方法,其包括以下步骤:
a)在存储器中对每一堆栈设置至少一堆栈跟踪记录区,并初始化;
b)执行打印信息记录函数,在打印过程中调用打印内容保存函数保存打印信息到所述堆栈跟踪记录区;
c)分别在入口处执行入口跟踪记录函数和在出口处执行出口跟踪记录函数,在应用程序的函数入口处和出口处分别进行插桩;
d)调用用于堆栈跟踪记录区的分析调试函数来显示所有堆栈跟踪记录区基本信息、指定堆栈跟踪记录区的函数调用过程和指定堆栈跟踪记录区的保存的打印内容。
所述的方法,其中,所述步骤a)还包括
a1)规划全部堆栈跟踪记录区的内存,每一个堆栈对应至少一个堆栈跟踪记录区,确定堆栈跟踪记录区的内存位置,函数调用记录区的大小;
a2)对每一个堆栈,初始化至少一个堆栈跟踪记录区,填写基本信息区内容、函数嵌套深度、当前打印记录索引,并对当前函数记录索引清零。
所述的方法,其中,所述步骤a2)中在堆栈的底部保存堆栈跟踪记录区的指针。
所述的方法,其中,所述步骤b)还包括:
b1)根据打印信息记录函数的局部变量的指针定位堆栈跟踪记录区的指针;
b2)根据堆栈跟踪记录区的当前打印记录索引,保存打印的字符串内容到记录区的打印内容保存区,同时更新当前打印记录索引,并将打印内容保存区设计成环型队列方式。
所述的方法,其中,所述步骤b)还包括:
b11)根据出口跟踪记录函数的局部变量指针定位堆栈跟踪记录区的指针;
b12)判断函数调用记录区是否为空,如为空,则退出;否则进入步骤b13);
b13)判断函数调用记录区是否满,如已满,再判断丢弃函数调用数是否为0,如不为0,则丢弃函数调用数减1,并退出;否则继续步骤b14);
b14)根据当前函数记录索引回溯,查找到调用函数的记录索引,在该调用函数的记录区中根据当前时间,计算并保存函数执行时间,设置调用函数的记录区为无效标记;
b15)所述堆栈跟踪记录区的函数嵌套深度减1,如果函数嵌套深度不为0,退出;否则继续步骤b16);
b16)设置函数起始记录索引值为当前函数记录索引。
所述的方法,其中,所述分析调试函数包括:
第一调试函数,显示所有被跟踪的堆栈标识、堆栈运行函数;
第二调试函数,根据堆栈标识,显示指定堆栈中的最近运行的函数,以及每个函数打印的内容;
第三调试函数,根据堆栈标识,显示指定堆栈最近打印的1K内容。
所述的方法,其中,所述堆栈跟踪记录区放在保留内存区中。
所述的方法,其中,所述步骤a)中对每个堆栈设置两个堆栈跟踪记录区,并在每次上电时,切换堆栈跟踪记录区,以保留上次运行信息。
本发明所提供的一种嵌入式系统多任务并发调试的方法,由于通过在单板的保留内存中给每个堆栈开辟一个堆栈跟踪记录区,不存在互斥要求,因此不影响被测软件的任务调度过程,并能顺畅执行多任务并发调试;调试过程中对软件异常的分析直接利用该堆栈跟踪记录区记录的信息,无需对硬件分析,因此实现简单,使用方便。
附图说明
图1是本发明方法的一个堆栈中发生的函数调用关系示意图;
图2是本发明方法的函数执行过程的嵌套深度变化示意图;
图3是本发明方法的堆栈跟踪记录区的格式示意图。
具体实施方式
以下详细对本发明方法进行描述。
本发明通过在单板的保留内存中给每个堆栈开辟一个堆栈跟踪记录区,在堆栈跟踪记录区的环形队列记录最近在此堆栈内执行的函数和打印的信息,给调试者一个清晰的消息处理流程,可以节约大量的调试时间;在堆栈被完全破坏的情况下,通常的调试手段显示不了函数调用过程,也可以通过该堆栈跟踪记录区显示函数调用过程;本发明还可以在程序跑飞复位的情况下,通过再次上电,观察单板保留内存中的上次运行的堆栈跟踪记录区信息,迅速定位跑飞的函数。
本发明的实施分为4大部分:
1.上电时调用相关初始化函数在单板的保留内存中进行堆栈跟踪记录区的分配和初始化。
2.在打印过程中调用打印内容保存函数保存打印信息到堆栈跟踪记录区。
3.在应用程序的函数入口处和出口处分别调用入口调用记录函数和出口调用记录函数,进行插桩;如果编译器能够自动插桩,就不必手动插桩。
4.调用用于堆栈跟踪记录区的分析调试函数来显示所有堆栈跟踪记录区基本信息、指定堆栈跟踪记录区的函数调用过程和指定堆栈跟踪记录区的保存的打印内容。
在嵌入式操作系统上开发的软件一般比较复杂,一般为多个任务并发执行,使用传统的设置断点进行调试的方法,有时不能完全满足需求。本发明可以跟踪每个堆栈上执行的最近若干个函数及其打印信息,弥补传统调试方式的不足,可以作为软件调试的有力帮助。
在嵌入式操作系统的软件中,通常每个任务都有一个独立的堆栈,如图1所示的,在某一任务下执行的函数一般都要占用堆栈中一块内存,在执行完毕时释放占用的堆栈内存,随着函数嵌套调用的增加,堆栈由顶部向底部开始增长。如图1中所示,在该堆栈中,函数f1调用函数f2,函数f2调用f3,如此等等。
本发明方法中的函数的执行过程如图2所示,纵轴表示函数嵌套,横轴表示函数执行过程。在t0时刻,开始进入函数f1,嵌套深度为1;在t1时刻,进入函数f2,嵌套深度为2;在t2时刻,进入函数f3,嵌套深度为3;在t3时刻,退出函数f2,嵌套深度为2;在t4时刻,退出函数f1,嵌套深度为1;在t5时刻,退出函数f1,嵌套深度恢复为0。
堆栈跟踪记录区的结构如图3所示,从上到下依次是基本信息区、打印内容保存区、函数调用记录区。基本信息区保存被跟踪的堆栈信息,如堆栈名称、标识、栈顶、栈底、堆栈长度等,当前调用的函数嵌套深度,当前函数记录索引,当前打印记录索引;打印内容保存区保存在该堆栈运行的函数最近打印的字符串内容,一般设置大小为1K;函数调用记录区保存在此堆栈最近运行的函数信息,根据内存大小决定记录区大小,一般至少记录32个函数。
对于打印信息的记录,不需要改变应用程序,只需要在打印函数中增加一个打印信息记录函数,在该函数中保存打印信息到堆栈跟踪记录区的打印记录区。对于调用函数记录,需要应用程序在每一个函数的入口处定义一个局部变量,可以为DWORD,填充一特殊值,如图1的的函数标记,再以函数标记的地址和函数名字符串作为参数调用入口跟踪记录函数,在函数出口处调用出口跟踪记录函数,这样才能完成在函数调用记录区记录调用函数的功能。
堆栈跟踪记录区可以放在保留内存区中,即使软件跑飞,也不被破坏。也可以对每个堆栈开辟两个堆栈跟踪记录区,每次上电时,切换堆栈跟踪记录区,从而实现保留上次运行信息的目的。
本发明所述的嵌入式系统多任务并发调试的方法如下:
第一步:所述堆栈跟踪记录区的初始化。这一步是在软件上电初始化过程中完成,其主要步骤如下:
1.按每一个堆栈对应至少一个堆栈跟踪记录区的原则规划全部堆栈记录区的内存。主要是确定堆栈记录区的内存位置,堆栈记录区的函数调用记录区的大小等。
2.对每一个堆栈,分配并初始化至少一个堆栈跟踪记录区,并在该堆栈跟踪记录区中填写如基本信息区内容、函数嵌套深度、当前打印记录索引等数据,并对当前函数记录索引清零。为了提高入口跟踪记录函数和出口跟踪记录函数的效率,可以在堆栈的底部保存堆栈跟踪记录区的指针。
第二步:打印信息记录函数的执行步骤。
1.首先根据打印信息记录函数的局部变量的指针定位到堆栈跟踪记录区的指针。
2.根据堆栈跟踪记录区的当前打印记录索引,保存打印的字符串内容到记录区的打印内容保存区,同时更新当前打印记录索引,所述打印内容保存区设计成环型队列方式,这样新的打印内容将会覆盖旧的打印内容。
第三步:入口跟踪记录函数的执行步骤。入口跟踪记录函数是在应用程序的函数入口处调用的,入口跟踪记录函数主要步骤如下:
1.根据入口跟踪记录函数的局部变量指针定位到所述堆栈跟踪记录区的指针。
2.判断函数调用记录区是否满,如果已满,则丢弃函数调用数加1,并退出。否则,进入下述步骤3。
3.根据当前函数记录索引,在函数调用记录区中记录调用函数的相关信息:如函数标记地址、函数调用时间、函数名、嵌套深度等信息。最后更新当前函数记录索引,指向下一函数调用记录。
第四步:出口跟踪记录函数的执行步骤。出口跟踪记录函数在应用程序的函数出口处调用执行,其包括以下步骤:
1.根据出口跟踪记录函数的局部变量指针定位堆栈跟踪记录区的指针。
2.判断函数调用记录区是否为空,如为空,则退出。否则进入下述步骤3。
3.判断函数调用记录区是否满,如已满,再判断丢弃函数调用数是否为0,如不为0,则丢弃函数调用数减1,并退出。否则继续下述步骤4。
4.根据当前函数记录索引回溯,查找到调用函数的记录索引,在该调用函数的记录区中根据当前时间,计算并保存函数执行时间,设置调用函数的记录区为无效标记。
5.堆栈跟踪记录区的函数嵌套深度减1,如果函数嵌套深度不为0,退出。否则继续下述步骤6。
6.设置函数起始记录索引值为当前函数记录索引,以便开始新一轮的函数调用跟踪记录。
如果CPU中断处理使用独立的中断栈,本发明方法还可以跟踪在中断栈中运行的函数。如果CPU的中断占用应用程序堆栈,并要求跟踪中断处理中运行的函数,为实现互斥要求,需要在入口跟踪记录函数和出口跟踪记录函数中短暂地关闭中断。
最后,还要提供若干个分析堆栈跟踪记录区的调试函数。主要有:
第一调试函数:显示所有被跟踪的堆栈标识、堆栈运行函数(包括是否运行完毕标记)。这样可以大致反映整个软件运行状况。如是否全部运行正常或是否被断住。
第二调试函数:根据堆栈标识,显示指定堆栈中的最近运行的函数,以及每个函数打印的内容。如果最近运行的函数打印过多,则最多显示最近打印的1K内容;如果最近运行的函数没有打印,则不显示打印内容。
第三调试函数:根据堆栈标识,显示指定堆栈最近打印的1K内容。
综上,本发明的嵌入式系统多任务并发调试的方法,其优点非常明显,具体如下:
采用本发明所述方法,如果硬件提供一个高分辨率的计数器,由于所述堆栈跟踪记录区记录有调试过程中的记录信息,因此可以对最近运行时刻的代码进行效率分析;
采用本发明方法,如果硬件提供足够的保留内存,只要单板不掉电,还可以查询上次程序跑飞的运行过程;
采用本发明所述方法,与现有的传统的设置断点调试技术相比,可以最大限度地减少对被测程序的干扰,在很多情况下,可以不用设置断点进行调试,节约大量调试时间;还可以查看被测程序最近运行的状态,分析流程是否和设计一致,利于及早发现问题,这是传统断点调试技术难以做到的;通过堆栈记录区的方式,对堆栈运行函数调用过程做一备份,即使堆栈被破坏,也可以观察到函数调用关系;
采用本发明所述方法,与商用软件CodeTEST等的软件实现方式相比,更具有实时性和对被测软件影响小的优点;与商用软件CodeTEST等的硬件实现方式相比,本发明方法具有实现简单、使用方便等优点。
应当理解的是,本发明方法对本领域普通技术人员来说,可以根据本发明的技术方案及其技术构思做出各种可能的改变或替换,而所有这些改变或替换都应属于本发明所附权利要求的保护范围。
Claims (8)
1、一种嵌入式系统多任务并发调试的方法,其包括以下步骤:
a)在存储器中对每一堆栈设置至少一堆栈跟踪记录区,并初始化;
b)执行打印信息记录函数,在打印过程中调用打印内容保存函数保存打印信息到所述堆栈跟踪记录区;
c)分别在入口处执行入口跟踪记录函数和在出口处执行出口跟踪记录函数,在应用程序的函数入口处和出口处分别进行插桩;
d)调用用于堆栈跟踪记录区的分析调试函数来显示所有堆栈跟踪记录区基本信息、指定堆栈跟踪记录区的函数调用过程和指定堆栈跟踪记录区的保存的打印内容。
2、根据权利要求1所述的方法,其特征在于,所述步骤a)还包括
a1)规划全部堆栈跟踪记录区的内存,每一个堆栈对应至少一个堆栈跟踪记录区,确定堆栈跟踪记录区的内存位置,函数调用记录区的大小;
a2)对每一个堆栈,初始化至少一个堆栈跟踪记录区,填写基本信息区内容、函数嵌套深度、当前打印记录索引,并对当前函数记录索引清零。
3、根据权利要求2所述的方法,其特征在于,所述步骤a2)中在堆栈的底部保存堆栈跟踪记录区的指针。
4、根据权利要求2所述的方法,其特征在于,所述步骤b)还包括:
b1)根据打印信息记录函数的局部变量的指针定位堆栈跟踪记录区的指针;
b2)根据堆栈跟踪记录区的当前打印记录索引,保存打印的字符串内容到记录区的打印内容保存区,同时更新当前打印记录索引,并将打印内容保存区设计成环型队列方式。
5、根据权利要求4所述的方法,其特征在于,所述步骤b)还包括:
b11)根据出口跟踪记录函数的局部变量指针定位堆栈跟踪记录区的指针;
b12)判断函数调用记录区是否为空,如为空,则退出;否则进入步骤b13);
b13)判断函数调用记录区是否满,如已满,再判断丢弃函数调用数是否为0,如不为0,则丢弃函数调用数减1,并退出;否则继续步骤b14);
b14)根据当前函数记录索引回溯,查找到调用函数的记录索引,在该调用函数的记录区中根据当前时间,计算并保存函数执行时间,设置调用函数的记录区为无效标记;
b15)所述堆栈跟踪记录区的函数嵌套深度减1,如果函数嵌套深度不为0,退出;否则继续步骤b16);
b16)设置函数起始记录索引值为当前函数记录索引。
6、根据权利要求5所述的方法,其特征在于,所述分析调试函数包括:
第一调试函数,显示所有被跟踪的堆栈标识、堆栈运行函数;
第二调试函数,根据堆栈标识,显示指定堆栈中的最近运行的函数,以及每个函数打印的内容;
第三调试函数,根据堆栈标识,显示指定堆栈最近打印的1K内容。
7、根据权利要求1~6任一权项所述的方法,其特征在于,所述堆栈跟踪记录区放在保留内存区中。
8、根据权利要求7所述的方法,其特征在于,所述步骤a)中对每个堆栈设置两个堆栈跟踪记录区,并在每次上电时,切换堆栈跟踪记录区,以保留上次运行信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410026825 CN1282085C (zh) | 2004-04-09 | 2004-04-09 | 一种嵌入式系统多任务并发调试的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200410026825 CN1282085C (zh) | 2004-04-09 | 2004-04-09 | 一种嵌入式系统多任务并发调试的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1564137A true CN1564137A (zh) | 2005-01-12 |
CN1282085C CN1282085C (zh) | 2006-10-25 |
Family
ID=34480752
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200410026825 Expired - Fee Related CN1282085C (zh) | 2004-04-09 | 2004-04-09 | 一种嵌入式系统多任务并发调试的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1282085C (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100389385C (zh) * | 2005-09-13 | 2008-05-21 | 佳能株式会社 | 打印信息处理装置、打印信息处理方法 |
WO2009129732A1 (zh) * | 2008-04-22 | 2009-10-29 | 华为技术有限公司 | 一种分布式调用消息的方法和装置 |
CN101183330B (zh) * | 2007-12-13 | 2010-05-19 | 东信和平智能卡股份有限公司 | 嵌入式系统的在线调试系统及其调试方法 |
CN101441588B (zh) * | 2007-11-22 | 2010-09-08 | 英业达股份有限公司 | 存储体测试方法 |
CN102043707A (zh) * | 2009-10-16 | 2011-05-04 | 腾讯科技(深圳)有限公司 | 嵌入式应用的性能测试方法、嵌入式终端设备及网络系统 |
CN102053906A (zh) * | 2009-10-30 | 2011-05-11 | 国际商业机器公司 | 用于收集程序运行时信息的系统和方法 |
CN101246449B (zh) * | 2008-02-25 | 2011-08-10 | 华为技术有限公司 | 跟踪函数调用轨迹的方法和装置 |
CN102214138A (zh) * | 2011-05-19 | 2011-10-12 | 福建星网视易信息系统有限公司 | 一种嵌入式系统软件的网络集中调试方法 |
CN101741850B (zh) * | 2009-12-25 | 2012-05-30 | 北京邮电大学 | 面向混合网络服务的多任务并发执行系统及方法 |
CN101408862B (zh) * | 2007-10-12 | 2012-08-22 | 李周 | 一种嵌入式系统测试方法 |
CN103034497A (zh) * | 2012-12-13 | 2013-04-10 | 中国航空无线电电子研究所 | 一种能记录嵌入式系统运行过程的方法 |
CN103902346A (zh) * | 2012-12-27 | 2014-07-02 | 上海鼎为电子科技(集团)有限公司 | 预编译中模拟宏控的实现方法及装置 |
CN104252402A (zh) * | 2014-09-05 | 2014-12-31 | 深圳创维数字技术有限公司 | 一种程序调试方法及装置 |
WO2016082601A1 (zh) * | 2014-11-28 | 2016-06-02 | 中兴通讯股份有限公司 | 程序运行过程中的异常处理方法及装置 |
CN107665113A (zh) * | 2017-09-07 | 2018-02-06 | 广东博立科技有限公司 | 防程序因指针跑飞而令程序系统崩溃的软件方法 |
CN108959069A (zh) * | 2018-06-11 | 2018-12-07 | 北京奇艺世纪科技有限公司 | 一种函数运行的追踪方法和装置 |
CN109597383A (zh) * | 2018-12-08 | 2019-04-09 | 顾满洲 | 一种轻量化小系统可靠性结构设计 |
CN111367588A (zh) * | 2018-12-25 | 2020-07-03 | 杭州海康威视数字技术股份有限公司 | 一种获取堆栈使用量的方法及装置 |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224454B (zh) | 2015-09-25 | 2018-06-05 | 华为技术有限公司 | 一种调试方法、多核处理器和调试设备 |
-
2004
- 2004-04-09 CN CN 200410026825 patent/CN1282085C/zh not_active Expired - Fee Related
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100389385C (zh) * | 2005-09-13 | 2008-05-21 | 佳能株式会社 | 打印信息处理装置、打印信息处理方法 |
CN101408862B (zh) * | 2007-10-12 | 2012-08-22 | 李周 | 一种嵌入式系统测试方法 |
CN101441588B (zh) * | 2007-11-22 | 2010-09-08 | 英业达股份有限公司 | 存储体测试方法 |
CN101183330B (zh) * | 2007-12-13 | 2010-05-19 | 东信和平智能卡股份有限公司 | 嵌入式系统的在线调试系统及其调试方法 |
CN101246449B (zh) * | 2008-02-25 | 2011-08-10 | 华为技术有限公司 | 跟踪函数调用轨迹的方法和装置 |
WO2009129732A1 (zh) * | 2008-04-22 | 2009-10-29 | 华为技术有限公司 | 一种分布式调用消息的方法和装置 |
CN102043707B (zh) * | 2009-10-16 | 2014-12-31 | 腾讯科技(深圳)有限公司 | 嵌入式应用的性能测试方法、嵌入式终端设备及网络系统 |
CN102043707A (zh) * | 2009-10-16 | 2011-05-04 | 腾讯科技(深圳)有限公司 | 嵌入式应用的性能测试方法、嵌入式终端设备及网络系统 |
CN102053906A (zh) * | 2009-10-30 | 2011-05-11 | 国际商业机器公司 | 用于收集程序运行时信息的系统和方法 |
CN101741850B (zh) * | 2009-12-25 | 2012-05-30 | 北京邮电大学 | 面向混合网络服务的多任务并发执行系统及方法 |
CN102214138A (zh) * | 2011-05-19 | 2011-10-12 | 福建星网视易信息系统有限公司 | 一种嵌入式系统软件的网络集中调试方法 |
CN103034497A (zh) * | 2012-12-13 | 2013-04-10 | 中国航空无线电电子研究所 | 一种能记录嵌入式系统运行过程的方法 |
CN103902346A (zh) * | 2012-12-27 | 2014-07-02 | 上海鼎为电子科技(集团)有限公司 | 预编译中模拟宏控的实现方法及装置 |
CN103902346B (zh) * | 2012-12-27 | 2017-09-29 | 上海鼎为电子科技(集团)有限公司 | 预编译中模拟宏控的实现方法及装置 |
CN104252402A (zh) * | 2014-09-05 | 2014-12-31 | 深圳创维数字技术有限公司 | 一种程序调试方法及装置 |
CN104252402B (zh) * | 2014-09-05 | 2018-04-27 | 深圳创维数字技术有限公司 | 一种程序调试方法及装置 |
WO2016082601A1 (zh) * | 2014-11-28 | 2016-06-02 | 中兴通讯股份有限公司 | 程序运行过程中的异常处理方法及装置 |
CN107665113A (zh) * | 2017-09-07 | 2018-02-06 | 广东博立科技有限公司 | 防程序因指针跑飞而令程序系统崩溃的软件方法 |
CN108959069A (zh) * | 2018-06-11 | 2018-12-07 | 北京奇艺世纪科技有限公司 | 一种函数运行的追踪方法和装置 |
CN109597383A (zh) * | 2018-12-08 | 2019-04-09 | 顾满洲 | 一种轻量化小系统可靠性结构设计 |
CN109597383B (zh) * | 2018-12-08 | 2021-10-08 | 顾满洲 | 一种轻量化小系统可靠性结构设计 |
CN111367588A (zh) * | 2018-12-25 | 2020-07-03 | 杭州海康威视数字技术股份有限公司 | 一种获取堆栈使用量的方法及装置 |
CN111367588B (zh) * | 2018-12-25 | 2023-05-16 | 杭州海康威视数字技术股份有限公司 | 一种获取堆栈使用量的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN1282085C (zh) | 2006-10-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1282085C (zh) | 一种嵌入式系统多任务并发调试的方法 | |
Jones et al. | The garbage collection handbook: the art of automatic memory management | |
Xu et al. | Software bloat analysis: Finding, removing, and preventing performance problems in modern large-scale object-oriented applications | |
CN1308826C (zh) | 用于smt处理器上的cpi调度的系统和方法 | |
CN1278224C (zh) | 在多处理器宿主系统上进行多处理器仿真的方法和系统 | |
CN1845120A (zh) | 一种恶意代码自动分析系统及方法 | |
US8650538B2 (en) | Meta garbage collection for functional code | |
CN1252594C (zh) | 使能跟踪重复指令的方法和系统 | |
CN1577290A (zh) | 用于方便成形一个应用程序的系统和方法 | |
US20080243968A1 (en) | Method and system for object age detection in garbage collection heaps | |
US20040111451A1 (en) | Detection of dead regions during incremental collection | |
CN101344865B (zh) | 一种cpu占用率测量方法及装置 | |
CN1677364A (zh) | 对代码覆盖使用硬件辅助的自主测试用例反馈的方法和设备 | |
DE102012217970A1 (de) | Computeranweisungen zum Aktivieren und Deaktivieren von Operanden | |
CN1801096A (zh) | 在计算机系统中用于对进程进行休眠的方法和系统 | |
WO2020248510A1 (zh) | 一种终端应用行为反射的处理方法 | |
CN1737755A (zh) | 一种嵌入式实时操作系统的建模和代码生成方法 | |
CN103440457A (zh) | 基于进程模拟的二进制程序分析系统 | |
EP1652094A1 (en) | Method and apparatus for improving the performance of garbage collection using stack trace cache | |
CN1904824A (zh) | 为全球应用创建文化敏感控件的方法和系统 | |
CN102411513B (zh) | 一种工作于混合模式执行引擎中的垃圾收集方法 | |
Schneider et al. | Migration of automotive real-time software to multicore systems: First steps towards an automated solution | |
Zabel et al. | Secure, real-time and multi-threaded general-purpose embedded Java microarchitecture | |
CN101005420A (zh) | 一种综合接入设备的嵌入式系统跨平台实现方法 | |
WO2020248512A1 (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061025 Termination date: 20140409 |