CN101246449B - 跟踪函数调用轨迹的方法和装置 - Google Patents
跟踪函数调用轨迹的方法和装置 Download PDFInfo
- Publication number
- CN101246449B CN101246449B CN2008101008880A CN200810100888A CN101246449B CN 101246449 B CN101246449 B CN 101246449B CN 2008101008880 A CN2008101008880 A CN 2008101008880A CN 200810100888 A CN200810100888 A CN 200810100888A CN 101246449 B CN101246449 B CN 101246449B
- Authority
- CN
- China
- Prior art keywords
- instruction
- function
- subfunction
- calling
- disable
- 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.)
- Expired - Fee Related
Links
Images
Abstract
本发明公开了一种跟踪函数调用轨迹的方法和装置,属于通信领域。所述方法包括:接收用户输入的函数;将函数中调用子函数的指令替换成指定的第一非法指令;在CPU执行到第一非法指令而产生指令异常后,输出子函数的信息。所述装置包括:接收模块、替换模块和输出模块。本发明通过将待跟踪函数中的调用子函数的指令替换成指定的非法指令,在CPU执行到非法指令而产生指令异常后,输出调用子函数的指令调用的子函数信息,提高了函数调用轨迹跟踪的效率。
Description
技术领域
本发明涉及通信领域,特别涉及一种跟踪函数调用轨迹的方法和装置。
背景技术
在软件系统调试中,函数的调用轨迹信息输出是一种重要的调试和除错手段。输出函数调用轨迹可以用于开发人员查看系统中函数执行的顺序是否和代码预期的一致;还可以用于获取函数实际执行的顺序,查找问题所在等等,这种调试手段在复杂的软件系统中尤其重要。
例如,待跟踪的函数为foo_A,跟踪foo_A后,其调用轨迹信息输出如下所示:
BEGIN
Now go into function foo_A,the context is:…
Now go into function foo_B,the context is:…
…
Now go into function foo_X,the context is…
Now leave function foo_A
END
从CPU指令执行的角度看,CPU顺序执行了调用函数foo_A、函数foo_B、函数foo_C、……和函数foo_X的指令;从堆栈的角度看,函数foo_A、函数foo_B、函数foo_C、……和函数foo_X顺序入栈,但出栈顺序不一定相同;从代码的角度上看,可能是如下情况及其嵌套组合:
函数foo_A
{ 函数foo_B
函数foo_C
…
};
或 函数foo_A
{ 函数foo_B
{ 函数foo_C
…
}
…
};
或 函数foo_A
{ 函数foo_B
{ 函数foo_C
{ 函数foo_D
}
…
}
…
}
现有技术中,通过以下两种方法进行函数调用轨迹信息输出:
一种是加入调试代码的方法,该方法在开发人员编码时,在每个函数的代码中,增加用于输出该函数信息的调试代码,使用编译宏或者全局控制变量/函数来使能或者去使能输出该函数信息的调试代码。例如,函数foo_1(),在foo_1()中加入编译宏使能的函数调用代码,如下所示:
foo_1()
{
…
使用编译宏使能
输出“调用foo_1()函数的信息”
编译宏结束
…
}
则调用foo_1(),将将输出如下调试信息:“调用foo_1()函数的信息”。
另外,还可以通过控制变量进行使能和去使能,例如,控制变量的值为1时,输出调用的函数信息;控制变量的值为0时,不输出函数信息。
通过上述方法进行函数调用轨迹跟踪时,如果软件系统使用历史的代码进行增量开发,并且历史代码没有考虑使用该调试方案的话,那么历史的代码需要大量新增或修改,从工程上讲,工作量大且容易出错,不利于软件的升级维护。
另一种是手工跟踪的方法,该方法借助断点设置工具对待跟踪函数设置断点,根据系统配套的调试工具,当CPU执行该函数时,在调试工具的输出终端上,手工进行单步跟踪。调试人员通过一步一步地跟踪,了解到函数调用的顺序。这些调用顺序可能和其它现场信息混合在一起输出,也可能没有输出,需要调试人员手工记录。
手工跟踪的方法通过人力操作,效率低,且需要借助调试工具,尤其在系统中没有集成这种调试工具或调试工具与软件系统相隔很远时,非常不方便。
综上所述,在实现本发明的过程中,发明人发现上述现有技术中至少存在以下缺点:
通过加入调试代码或手工跟踪的方式跟踪函数的调用轨迹,工作复杂且效率低。
发明内容
为了提高函数调用轨迹跟踪的效率,本发明实施例提供了一种跟踪函数调用轨迹的方法和装置。所述技术方案如下:
一方面,本发明实施例提供了一种跟踪函数调用轨迹的方法,所述方法包括:
操作系统接收用户输入的函数后,在所述函数的入口处设置断点;
在CPU执行到所述断点产生断点异常后,将所述函数中调用子函数的指令替换成指定的第一非法指令;
在所述CPU执行到所述第一非法指令而产生指令异常后,输出所述子函数的信息。
另一方面,本发明实施例还提供了一种跟踪函数调用轨迹的装置,所述装置包括:
接收模块,用于接收用户输入的函数;
设置模块,用于在所述函数的入口处设置断点;
替换模块,用于在CPU执行到所述设置模块设置的断点而产生断点异常后,将所述函数中调用子函数的指令替换成指定的第一非法指令;
输出模块,用于在所述CPU执行到所述第一非法指令而产生指令异常后,输出所述子函数的信息。
本发明实施例通过将用户输入的待跟踪的函数中的调用子函数指令替换成指定的非法指令,在CPU执行到非法指令时,输出调用子函数指令调用的子函数的信息,与现有技术相比,工作量小,而且实现简单,提高了跟踪函数调用轨迹时的效率。
附图说明
图1是本发明实施例1提供的跟踪函数调用轨迹的方法的流程图;
图2是本发明实施例2提供的跟踪函数调用轨迹的装置的结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例通过将用户输入的待跟踪函数中的调用子函数的指令替换成指定的非法指令,在CPU执行到非法指令时,输出待跟踪函数调用的子函数的信息,在进行函数调用轨迹跟踪时,工作量小,提高了跟踪函数调用轨迹时的效率。
实施例1
参见图1,本发明实施例提供了一种跟踪函数调用轨迹的方法,具体包括:
101:用户通过I/O接口输入待跟踪函数。
例如,如果用户需要跟踪函数F1的调用轨迹,可以通过I/O接口输入函数F1
例如,如果用户需要跟踪函数F1的调用轨迹,可以通过I/O接口输入函数F1。
102:操作系统接收到用户输入的待跟踪函数后,在该函数的入口处设置断点。
其中,断点可以分成硬件断点和软件断点。硬件断点由CPU提供,在CPU的断点寄存器中存储可以产生中断的中断指令地址,当CPU执行到该中断指令时,产生第一断点异常;软件断点可以由操作系统提供,或者由开发者加入,将指令设置成指定的、不存在的CPU指令,当CPU执行到该指令时,产生第二断点异常,即指令异常。
操作系统对上述第一断点异常和第二指令异常,及其它异常进行统一的编号,称之为异常向量或中断向量;操作系统还提供了一种机制,可以用于开发者将中断向量和处理程序连接起来,这些处理程序称为中断服务程序。
本实施例中,在待跟踪函数的入口处,可以通过设置CPU的中断指令而产生断点,或通过设置操作系统或开发者提供的指定的、不存在的指令而产生断点,即可以使用“硬件断点”,也可以使用“软件断点”,因此操作系统包含两个中断服务程序,例如,中断服务程序A挂接在第一断点异常的中断向量上;中断服务程序B挂接在第二断点异常的中断向量上。
103:在CPU执行到待跟踪函数入口处设置的断点产生断点异常后,中断服务程序A接管该中断,进行以下处理。
进一步地,为了在输出待跟踪函数的信息后设置的断点不影响CPU的正常运行,在中断服务程序接管该中断后还可以包括:
清除在待跟踪函数的入口处设置的断点。
104:遍历待跟踪函数中的所有指令,将调用子函数的指令替换成指定的第一非法指令。
在一个函数中,可能会调用多个子函数,当调用多个子函数时,根据编译方式的不同,可以将待跟踪函数中多个调用子函数的指令分别替换成相同的非法指令,也可以将其分别替换成均不相同的非法指令。长跳转的编译方式可以将多个调用子函数的指令都编译成相同的调用子函数的指令,而将编译后的指令地址存储到寄存器中,因此该编译方式下可以将多个调用子函数的指令替换成相同的非法指令;短跳转的编译方式将不同的调用子函数的指令编译成不同的调用子函数的指令,而将编译后的指令地址添加到编译后的指令中,因此该编译方式需要将多个调用子函数的指令替换成不同的非法指令。例如,函数F1中调用了子函数f1、子函数f2等函数,在短跳转编译方式下将调用子函数f1的指令替换成Call_f1,将调用子函数f2的指令替换成Call_f2;在长跳转编译方式下将调用子函数f1的指令和调用子函数f2的指令都替换成Call_f1。
进一步地,在将调用子函数的指令替换成指定的第一非法指令后还可以包括:
记录与替换相关的指令变更信息,其中,当调用多个子函数时,将多个调用子函数的指令替换成非法指令的方式不同,记录的指令变更信息也不同,在长跳转编译方式下,因为编译后的多个调用子函数的指令均相同,将多个调用子函数的指令替换成相同的非法指令,所以记录的指令变更信息只包括一条编译后的调用子函数的指令和一条替换后的非法指令即可;在短跳转编译方式下,编译后的多个调用子函数的指令均不相同,将多个调用子函数的指令替换成不同的非法指令,所以记录的指令变更信息除了每条编译后的调用子函数的指令和相应的替换后的非法指令,还包括编译后的调用子函数的指令地址。
105:当CPU执行到非法指令时,产生指令异常,中断服务程序接管该中断。
106:判断该非法指令是否是指定的第一非法指令,如果是,执行107;否则,执行108。
由于程序错误或操作系统本身的问题也可能会产生非法指令,因此需要判断非法指令是否是指定的第一非法指令,如果是,则继续进行下面的处理;否则,退出本中断服务程序。
进一步地,为了不影响操作系统地正常运行,在判断出非法指令是指定的第一非法指令后,还可以包括:
根据104中记录的指令变更信息将第一非法指令恢复成替换前的调用子函数的指令。
107:输出调用子函数指令调用的子函数的信息,例如,子函数为f1,则输出f1的信息,结束。
其中,107的子函数中还可能调用了次级子函数,例如,子函数f1又调用了次级子函数s1、s2等函数,因此上述方法还包括:
在输出子函数的信息后,判断子函数中是否存在调用次级子函数的指令,如果是,则遍历子函数的所有指令,将调用次级子函数的指令替换成指定的第二非法指令;
在CPU执行到非法指令产生指令异常后,判断非法指令是否为指定的第二非法指令,如果是,则输出次级子函数的信息;否则,退出中断服务程序。
同理,在将调用次级子函数的指令替换成指定的第二非法指令后,还可以包括记录与替换相关的指令变更信息,相应地,在CPU执行到第二非法指令产生指令异常后,还可以包括根据记录的指令变更信息将第二非法指令恢复成替换前的调用次级子函数的指令。
当次级子函数中还存在调用三级子函数的指令时,处理过程与次级子函数的处理过程相同,以此类推,直到待跟踪函数中不存在指定的非法指令时,输出调用子函数指令调用的子函数的信息的过程完成。
108:CPU退出本中断服务程序,交由操作系统处理。
进一步地,用户在跟踪函数调用轨迹时,还可以设置跟踪条件,例如,全局变量的值的判断、函数入参值的判断和/或某一具体地址的数值的判断等。因此在102之后还可以包括:
当用户输入跟踪条件时,判断待跟踪函数是否满足跟踪条件,如果是,则执行103;否则,保留在待跟踪函数的入口处设置的断点,CPU退出本中断服务程序,继续向下执行。
本实施例中,指定的第一非法指令和第二非法指令可以是相同的非法指令,也可以是不同的非法指令。
本实施例提供的跟踪函数调用轨迹的方法可以用于嵌入式设备,也可以用于桌面/服务器系统,不仅可以跟踪静态链接的软件程序中函数的调用轨迹,还可以用于跟踪动态链接的软件程序中函数的调用轨迹。
本发明实施例通过将待跟踪函数中的调用函数的指令替换成指定的非法指令,在CPU执行到非法指令时,输出调用函数指令调用的函数的信息,可以实现软件系统中集成第三方对任意函数的调用轨迹跟踪,与现有技术相比,不需要增加、修改待跟踪函数代码,工作量小,且节省存储空间,同时不需要借助调试工具,效率高;在输出函数的调用轨迹后,将非法指令恢复为替换前的调用函数指令,不影响系统的正常运行。
实施例2
参见图2,本发明实施例提供了一种跟踪函数调用轨迹的装置,该装置包括:
接收模块,用于接收用户输入的函数;
替换模块,用于在接收模块接收到用户输入的函数后,将函数中调用子函数的指令替换成指定的第一非法指令;
输出模块,用于在CPU执行到替换模块替换的第一非法指令而产生指令异常后,输出子函数的信息。
上述装置还可以包括:
设置模块,用于在接收模块接收的函数的入口处设置断点;
相应地,替换模块可以具体包括:
替换单元,用于在CPU执行到设置模块设置的断点而产生断点异常后,将函数中调用子函数的指令替换成指定的第一非法指令。
进一步地,上述装置还可以包括:
次级判断模块,用于在CPU输出子函数的信息后,判断子函数中是否存在调用次级子函数的指令;
次级替换模块,用于当次级判断模块判断出子函数中存在调用次级子函数的指令时,将调用次级子函数的指令替换成指定的第二非法指令;
次级输出模块,用于当CPU执行到次级替换模块替换的第二非法指令产生指令异常后,输出次级子函数的信息。
进一步地,上述装置还可以包括:
记录模块,用于在替换模块将函数中调用子函数的指令替换成指定的第一非法指令后,记录与替换相关的指令变更信息;
恢复模块,用于在CPU执行到替换模块替换的第一非法指令而产生指令异常后,根据记录模块记录的指令变更信息将第一非法指令恢复成调用子函数的指令。
进一步地,上述接收模块可以具体包括:
接收单元,用于接收用户输入的函数和跟踪条件,
相应地,上述替换模块可以具体包括:
判断单元,用于判断接收单元接收的函数是否满足跟踪条件;
替换单元,用于当判断单元判断出接收单元接收的函数满足跟踪条件时,将函数中调用子函数的指令替换成指定的第一非法指令。
本发明实施例通过替换模块将待跟踪函数中的调用函数的指令替换成指定的非法指令,在CPU执行到非法指令时,输出模块输出该非法指令对应的调用函数指令调用的函数信息,与现有技术相比,在跟踪函数的调用轨迹时,不需要增加、修改待跟踪的函数代码,工作量小,且节省存储空间,同时不需要借助调试工具,效率高;在输出函数的调用轨迹后,由恢复模块将非法指令恢复为对应的调用函数指令,不影响系统的正常运行。
本发明实施例可以通过软件实现,相应地软件可以存储到可读取的存储介质中,例如,计算机的硬盘、软盘或光盘中。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种跟踪函数调用轨迹的方法,其特征在于,所述方法包括:
操作系统接收用户输入的函数后,在所述函数的入口处设置断点;
在CPU执行到所述断点产生断点异常后,将所述函数中调用子函数的指令替换成指定的第一非法指令;
在所述CPU执行到所述第一非法指令而产生指令异常后,输出所述子函数的信息。
2.根据权利要求1所述的跟踪函数调用轨迹的方法,其特征在于,所述方法还包括:
在所述CPU输出所述子函数的信息后,判断所述子函数中是否存在调用次级子函数的指令,如果是,则将所述调用次级子函数的指令替换成指定的第二非法指令;
当所述CPU执行到所述第二非法指令产生指令异常后,输出所述次级子函数的信息。
3.根据权利要求1所述的跟踪函数调用轨迹的方法,其特征在于,将所述函数中调用子函数的指令替换成指定的第一非法指令后,所述方法还包括记录与替换相关的指令变更信息;
相应地,在CPU执行到所述第一非法指令而产生指令异常后,所述方法还包括根据所述指令变更信息将所述第一非法指令恢复成所述调用子函数的指令。
4.根据权利要求1所述的跟踪函数调用轨迹的方法,其特征在于,所述将所述函数中调用子函数的指令替换成指定的第一非法指令,具体包括:
当所述用户输入跟踪条件时,判断所述函数是否满足所述跟踪条件,如果是,则将所述函数中调用子函数的指令替换成所述第一非法指令。
5.根据权利要求1所述的跟踪函数调用轨迹的方法,其特征在于,所述将所述函数中调用子函数的指令替换成指定的第一非法指令,包括:
当所述函数中包含多个调用子函数的指令时,将所述多个调用子函数的指令分别替换成均不相同的第一非法指令;
或者,
当所述函数中包含多个调用子函数的指令时,将所述多个调用子函数的指令分别替换成相同的第一非法指令。
6.一种跟踪函数调用轨迹的装置,其特征在于,所述装置包括:
接收模块,用于接收用户输入的函数;
设置模块,用于在所述函数的入口处设置断点;
替换模块,用于在CPU执行到所述设置模块设置的断点而产生断点异常后,将所述函数中调用子函数的指令替换成指定的第一非法指令;
输出模块,用于在所述CPU执行到所述第一非法指令而产生指令异常后,输出所述子函数的信息。
7.根据权利要求6所述的跟踪函数调用轨迹的装置,其特征在于,所述装置还包括:
次级判断模块,用于在所述输出模块输出所述子函数的信息后,判断所述子函数中是否存在调用次级子函数的指令;
次级替换模块,用于当所述次级判断模块判断出所述子函数中存在调用次级子函数的指令后,将所述调用次级子函数的指令替换成指定的第二非法指令;
次级输出模块,用于当所述CPU执行到所述次级替换模块替换的第二非法指令产生指令异常后,输出所述次级子函数的信息。
8.根据权利要求6所述的跟踪函数调用轨迹的装置,其特征在于,所述装置还包括:
记录模块,用于在所述替换模块将所述函数中调用子函数的指令替换成指定的第一非法指令后,记录与替换相关的指令变更信息;
恢复模块,用于在所述CPU执行到所述替换模块替换的第一非法指令而产生指令异常后,根据所述记录模块记录的指令变更信息将所述第一非法指令恢复成所述调用子函数的指令。
9.根据权利要求6所述的跟踪函数调用轨迹的装置,其特征在于,所述接收模块具体包括:
接收单元,用于接收用户输入的函数和跟踪条件;
相应地,所述替换模块具体包括:
判断单元,用于判断所述接收单元接收的函数是否满足所述跟踪条件;
替换单元,用于当所述判断单元判断出所述接收单元接收的函数满足所述跟踪条件时,将所述函数中调用子函数的指令替换成指定的第一非法指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101008880A CN101246449B (zh) | 2008-02-25 | 2008-02-25 | 跟踪函数调用轨迹的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008101008880A CN101246449B (zh) | 2008-02-25 | 2008-02-25 | 跟踪函数调用轨迹的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101246449A CN101246449A (zh) | 2008-08-20 |
CN101246449B true CN101246449B (zh) | 2011-08-10 |
Family
ID=39946913
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008101008880A Expired - Fee Related CN101246449B (zh) | 2008-02-25 | 2008-02-25 | 跟踪函数调用轨迹的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101246449B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8947438B2 (en) * | 2011-08-01 | 2015-02-03 | Microsoft Corporation | Reducing font instructions |
CN102609241B (zh) * | 2012-01-19 | 2018-04-27 | 中兴通讯股份有限公司 | 热补丁方法及装置 |
CN102646051A (zh) * | 2012-03-13 | 2012-08-22 | 深圳市融创天下科技股份有限公司 | 一种输出函数执行流的方法、系统和终端设备 |
CN102789418B (zh) * | 2012-06-27 | 2015-09-30 | 北京大学深圳研究生院 | 处理器功能仿真模型生成装置、方法及功能验证方法 |
US11636122B2 (en) | 2015-12-30 | 2023-04-25 | Futurewei Technologies, Inc. | Method and apparatus for data mining from core traces |
GB2558955B (en) * | 2017-01-24 | 2020-12-23 | Advanced Risc Mach Ltd | An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions |
CN106940681B (zh) * | 2017-03-11 | 2020-07-21 | 苏州浪潮智能科技有限公司 | 一种利用跟踪函数和解析工具调试存储软件的方法 |
CN111381905B (zh) * | 2018-12-27 | 2023-07-18 | 北京华为数字技术有限公司 | 一种程序处理方法、装置及设备 |
CN115878363A (zh) * | 2023-02-02 | 2023-03-31 | 北京紫光芯能科技有限公司 | 用于解析处理器异常的方法、装置及计算机可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564137A (zh) * | 2004-04-09 | 2005-01-12 | 中兴通讯股份有限公司 | 一种嵌入式系统多任务并发调试的方法 |
KR20060059792A (ko) * | 2004-11-29 | 2006-06-02 | 주식회사 안철수연구소 | 실시간 컴퓨터 프로그램의 디버깅 방지 방법 및 그 기록매체 |
CN101089827A (zh) * | 2007-07-27 | 2007-12-19 | 中兴通讯股份有限公司 | 一种函数调用跟踪系统和跟踪方法 |
-
2008
- 2008-02-25 CN CN2008101008880A patent/CN101246449B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1564137A (zh) * | 2004-04-09 | 2005-01-12 | 中兴通讯股份有限公司 | 一种嵌入式系统多任务并发调试的方法 |
KR20060059792A (ko) * | 2004-11-29 | 2006-06-02 | 주식회사 안철수연구소 | 실시간 컴퓨터 프로그램의 디버깅 방지 방법 및 그 기록매체 |
CN101089827A (zh) * | 2007-07-27 | 2007-12-19 | 中兴通讯股份有限公司 | 一种函数调用跟踪系统和跟踪方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101246449A (zh) | 2008-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101246449B (zh) | 跟踪函数调用轨迹的方法和装置 | |
CN100555218C (zh) | 用于改善片上仿真系统中高级语言的仿真速度的装置和方法 | |
CN102955737B (zh) | 异构处理器体系的程序调试方法和系统 | |
CN103592880B (zh) | 用于大型工程类设备的智能控制器系统 | |
US8239340B2 (en) | Message conduit systems with algorithmic data stream control and methods for processing thereof | |
CN103019874B (zh) | 基于数据同步实现异常处理的方法及装置 | |
CN102298535A (zh) | 绑定数据并行设备源代码 | |
CN1286431A (zh) | 嵌入式软件辅助调试方法 | |
CN113568705B (zh) | 一种分布式架构下的代码集成仿真方法 | |
CN102495797A (zh) | 智能卡测试装置和测试方法 | |
CN101853200A (zh) | 一种高效动态软件漏洞挖掘方法 | |
CN103853147B (zh) | 一种嵌入式系统的在线调试系统 | |
CN101458633B (zh) | 通过脚本程序访问宿主程序的方法及其系统和装置 | |
CN109885493A (zh) | 一种基于Android平台和Java反射的自动化混合框架 | |
CN105447285A (zh) | 一种提高OpenCL硬件执行效率的方法 | |
CN100456238C (zh) | 实现分布式对象持久化的方法、装置及编译单元 | |
CN1975701B (zh) | 主机驱动外设的方法及系统 | |
CN201237713Y (zh) | 嵌入式一体化工控机 | |
CN103309678B (zh) | 一种在ibm大中型机混构环境中的资料处理方法 | |
CN108595156A (zh) | 一种基于Impala组件的批处理方法及系统 | |
Dantas et al. | Towards aspect-oriented programming for context-aware systems: A comparative study | |
CN103927153B (zh) | 一种系统配置的方法、设备及系统 | |
CN112559336A (zh) | 自适应调试异构计算芯片的方法、装置、系统及主板芯片 | |
WO2011071543A2 (en) | Transparent network substrate system | |
CN107329764A (zh) | 一种多任务gcplc系统及利用该系统实现应用开发的方法 |
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: 20110810 Termination date: 20160225 |