调用堆栈关系获取方法及装置的制造方法

文档序号:8922385阅读:326来源:国知局
调用堆栈关系获取方法及装置的制造方法
【技术领域】
[0001] 本发明涉及网络技术领域,特别涉及一种调用堆栈关系获取方法及装置。
【背景技术】
[0002] JavaScript函数的调用堆栈关系指JavaScript函数之间的调用关系。例如,A文 件a函数调用了B文件b函数,B文件b函数调用了C文件c函数,则调用堆栈关系可以表 示为:A:a->B:b_>C:c。开发人员根据该JavaScript函数的调用堆栈关系,能够在缺乏相应 的函数名和程序注释的情况下,阅读JavaScript代码。
[0003] -般地,在JavaScript代码发布前,采用JavaScript代码混淆技术对待发布 JavaScript代码进行混淆,将待发布代码中的所有变量、函数、类的名称变为简短的英文字 母代号,去除待发布代码中的冗余信息,使得混淆后代码与混淆前代码完成相同的功能,混 淆后代码很难被反编译,实现了对JavaScript代码的保护。
[0004] 由于混淆后代码缺乏相应的函数名和程序注释,使得开发人员无法阅读混淆后代 码,不能获取混淆后代码的函数之间的调用关系,无法对混淆后代码进行测试。

【发明内容】

[0005] 为了解决现有技术的问题,本发明实施例提供了一种调用堆栈关系获取方法及装 置。所述技术方案如下:
[0006] -方面,提供了一种调用堆栈关系获取方法,所述方法包括:
[0007] 对于打开的每一个页面,记录所述页面所加载的多个代码文件;
[0008] 对于所述页面中运行的多个代码文件中的每一个函数,在所述函数开始运行和结 束运行时,至少获取所述函数的调用层次,所述函数的调用层次包括调用所述函数的函数 名和所述函数调用的函数名中的至少一项;
[0009] 根据所述多个代码文件中每个函数的调用层次,得到所述多个代码文件的调用堆 栈关系。
[0010] 另一方面,提供了一种调用堆栈关系获取装置,所述装置包括:
[0011] 代码文件加载模块,用于对于打开的每一个页面,记录所述页面所加载的多个代 码文件;
[0012] 调用信息获取模块,用于对于所述页面中运行的多个代码文件中的每一个函数, 在所述函数开始运行和结束运行时,至少获取所述函数的调用层次,所述函数的调用层次 包括调用所述函数的函数名和所述函数调用的函数名中的至少一项;
[0013] 调用堆栈关系获取模块,用于根据所述多个代码文件中每个函数的调用层次,得 到所述多个代码文件的调用堆栈关系。
[0014] 本发明实施例提供的技术方案带来的有益效果是:
[0015] 在代码运行过程中,对于打开的每一个页面,通过记录该页面所加载的多个代码 文件,并记录函数开始运行和结束运行时的调用层次,从而得到该页面中多个代码文件的 调用堆栈关系,该调用堆栈关系可以直观显示该页面中多个代码文件的函数之间的逻辑调 用关系,使得开发人员在缺乏相应的函数名和程序注释的情况下,也可以对代码进行测试。
【附图说明】
[0016] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使 用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于 本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他 的附图。
[0017] 图1是本发明实施例提供的调用堆栈关系获取方法流程图;
[0018] 图2是本发明实施例提供的调用堆栈关系获取方法流程图;
[0019] 图3是本发明实施例提供的二元组获取示意图;
[0020] 图4是本发明实施例提供的调用堆栈关系获取示意图;
[0021] 图5是本发明实施例提供的调用堆栈关系应用示意图;
[0022] 图6是本发明实施例提供的调用堆栈关系应用示意图;
[0023] 图7是本发明实施例提供的调用堆栈关系获取装置结构示意图。
【具体实施方式】
[0024] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0025] 图1是本发明实施例提供的调用堆栈关系获取流程图。参见图1,该实施例包括:
[0026] 101、对于打开的每一个页面,记录该页面所加载的多个代码文件。
[0027] 102、对于该页面中运行的多个代码文件中的每一个函数,在该函数开始运行和结 束运行时,至少获取该函数的调用层次,该函数的调用层次包括调用该函数的函数名和该 函数调用的函数名中的至少一项。
[0028] 103、根据该多个代码文件中每个函数的调用层次,得到该多个代码文件的调用堆 栈关系。
[0029] 本发明实施例提供的方法,在代码运行过程中,对于打开的每一个页面,通过记录 该页面所加载的多个代码文件,并记录该页面中多个代码文件的每一个函数开始运行和结 束运行时,函数的调用层次,从而得到该页面中多个代码文件的调用堆栈关系,该调用堆栈 关系可以直观显示该页面中多个代码文件的函数之间的逻辑调用关系,使得开发人员在缺 乏相应的函数名和程序注释的情况下,也可以对代码进行测试。
[0030] 可选地,对于该页面中运行的多个代码文件中的每一个函数,在该函数开始运行 和结束运行时,至少获取该函数的调用层次包括:
[0031] 对于该页面中运行的多个代码文件中的每一个函数,当该函数开始运行时,至少 获取调用该函数的函数名;
[0032] 当该函数结束运行时,至少获取该函数调用的函数名。
[0033] 可选地,该方法还包括:
[0034] 对于该页面中运行的多个代码文件中的每一个函数,在该函数开始运行和结束运 行时,获取该函数的行号。
[0035] 可选地,该方法还包括:
[0036] 确定变化的行号对应的函数;
[0037] 根据该多个代码文件的调用堆栈关系,确定该函数在输出的调用堆栈关系中所对 应的部分;
[0038] 根据该函数在输出的调用堆栈关系中所对应的部分,确定当前行号变化所影响的 功能。
[0039] 可选地,根据该函数在输出的调用堆栈关系中所对应的部分,确定当前行号变化 所影响的功能包括:
[0040] 根据该函数在输出的调用堆栈关系中所对应的部分,确定该调用堆栈关系中所对 应部分对应的代码文件;
[0041] 根据该代码文件,确定加载该代码文件的页面对应的功能。
[0042] 可选地,该方法还包括:
[0043] 对该多个代码文件进行混淆后,得到发布代码;
[0044] 根据该多个代码文件的调用堆栈关系,确定该发布代码中函数之间的调用关系;
[0045] 根据该发布代码中函数之间的调用关系,对该发布代码进行调整。
[0046] 图2是本发
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1