当前位置: 首页 > 专利查询>SAP欧洲公司专利>正文

通过沿着数据流的污点跟踪进行内容驱动的调试制造技术

技术编号:28978092 阅读:23 留言:0更新日期:2021-06-23 09:23
本文公开了用于对从用户到过程的输入数据进行污点分析的系统、方法和计算机程序产品实施例,其中基于预定义的规则,输入数据可以被标记为被污点。在被动模式下,可以会对污点数据采取记录或删除操作。在主动模式下,在每次到达污点点时,过程可以被中断并且可以显示用户提示。

【技术实现步骤摘要】
通过沿着数据流的污点跟踪进行内容驱动的调试
本公开的实施例涉及通过沿着数据流的污点跟踪进行内容驱动的调试。
技术介绍
在当今时代,由于编码方式、用户输入或其他各种原因,应用经常会因运行中可能出现的错误而失败。软件开发人员通常在被称为调试器的程序中使用调试技术,以逐步执行应用来检测和诊断应用中的这种错误。以这种方式,通过使用调试器,开发人员能够洞察应用的状态(例如,分配给变量的值、线程的状态等)。通常,开发人员能够设置断点,这些断点用于在不同的点暂停程序的运行,在这些不同的点处,开发人员或工程师想要分析运行并检查这些状态变量的值。这些断点又被绑定到给定行的源代码,其中程序可以每次在运行程序时在该点无条件地停止,或者其中条件可以被设置为每次在满足该条件时(例如,当变量超过或小于阈值时等)在该行停止程序。然后,在该行停止之后,使用调试器的开发人员可以逐步运行该行之后的后续行的代码的块。当调试器以这种方式逐步运行代码时,开发人员可以检查感兴趣的变量的状态。通过检查这些不同断点处的程序状态,以及对后续行的代码的可能的逐步监控,开发人员和工程师能够跟踪这些错误的源,并能够监控整个这些应用中的数据流。尽管这种设置断点的构思很好地适用于小型非复杂代码,但是如果代码复杂,由多个开发人员编写,或者以其他方式以不可跟踪或难以跟踪的方式分割,那么要知道从哪里开始调试和/或分析代码,以及从这个起点开始直到遇到错误在哪里遵循代码,可能会很棘手。以这种方式利用断点进行调试需要一个起点(调试器从该起点逐步下降到下一个断点),将导致程序状态改变的变量的变化考虑在内,由此在某个断点,例如,状态程序变量的不希望的改变可能导致错误被发现。也就是说,可能要花不必要的时间来弄清楚这个起点在哪里,弄清楚如何精确地从一个断点到另一个断点(breakpoint-to-breakpoint)逐步下降,以便发现程序有错误,并且没有按预期执行。例如,如果程序员意识到变量的输出值是错误的,但不清楚在涉及该变量的多条语句中哪条代码语句可能是该变量产生错误输出的路径,那么就很难知道程序中的漏洞(bug)的确切位置。因此,很难分配起点或起点之后的断点,以确定在哪里确切地分析变量的变化值,从而导致错误诊断。通过在可能成百上千行的代码之间放置断点来确定从哪里开始调试分析所花的时间不利于快速诊断问题或检查数据流。另一个问题是调试对于像工程师/开发人员这样实际上对所讨论的代码有工作知识的人来说更有用。对于像财务审计员、隐私专家等这样的人来说,他们可能对监控整个应用中的数据流感兴趣,但是他们可能没有对代码进行过复杂的处理或不具有代码知识,尽管他们希望监控数据流以分析异常输出值,或者如果他们怀疑可能发生错误,他们可能不知道在哪里设置适当的起点或断点,从而逐步跟踪错误源的流。这是因为他们可能不了解应用的代码,并且可能无法解释代码的含义以确定在哪里可以操纵变量,从而获得路径并获得错误或异常的值。为了监控变量以确定它们可以在哪里被操纵,还可以在调试器中设置观察点(watchpoint)。当关于变量满足特定条件时,通常绑定到该变量的观察点可以在每次访问该变量时停止程序(例如,对于变量字符串a,当字符串a="bob"时,每次访问字符串a时程序可以停止,或者对于变量整数b,当b=50时,每次访问b时程序可以停止,或者当任何其他这样的条件语句变为真时)。对于可能不精通计算机语法的非技术人员(例如,财务审计师或隐私专家),可能难以在特定变量上设置各个观察点,因此这可能不是最佳的用户友好选项。此外,即使在变量上设置了观察点,观察点也可能绑定到变量本身,而不是变量的内容。在这种情况下,如果第二变量通过被设置为等于具有观察点的第一变量而被直接导出(例如,在上面的示例中,在变量b上具有观察点,以查看是否满足上面b=50的条件,变量整数c可以被设置为使得c=b),则当条件被满足时,观察点可以在分配行处暂停。也就是说,如果b=50,如果在变量b上设置了观察点,程序可以在行c=b暂停。然而,如果对于另一个变量整数d,如果在上面的示例中变量整数d被设置为等于变量整数c(d=c),并且观察点仍然被设置在变量b上,即使当b变成50时d的值可能是50,程序仍然不会在行d=c停止,因为观察点被绑定到变量。也就是说,因为观察点绑定到变量本身,而不是变量的内容,所以在这种情况下,如果b是要被监控和停止的变量,则停止可能不会传播到获取分配给变量b的值的其他变量(即,在上面的示例中,虽然整数d直接从被分配为50的b获取值,但由于d=c且c=b,调试器不会在其分配行d=c处停止,因为观察点仅在变量b上)。最后,另一个问题是,典型的调试器绑定到应用或平台。如今,随着互联网、云计算和其他此类技术进步的出现,内容往往分散在不同的应用中。系统信息跨平台流动,特别是在互联网上、跨网络使用的应用、网络应用、云应用等。在这样的应用中,大量的微服务可能从其他服务或微服务接收数据,并且在不同的平台和应用之间有大量的数据来回交叉流动。一个微服务中发生的错误可能源于从另一个微服务接收到的数据,而另一个微服务又可能从第三个应用或微服务接收到错误数据,依次类推。如果没有清晰的方法来跟踪跨应用的数据流,以应用绑定的方式跟踪错误可能无法将错误追溯到不同的微服务。结果,除了浪费时间试图找到合适的起点和合适的断点之外,以应用绑定的方式进行操作实际上可能会对错误进行错误地分类或对错误进行不正确地分类,其中这些错误是由于正在调试的应用中未发生动作而导致的。此外,微服务的最终用户(end-user)可能希望调试源自不同的原始应用或服务的数据,其中这些应用或服务可能将数据发送到他们正在使用的微服务。但是,他们可能无法访问原始应用,因此可能无法跨平台调试异常或错误数据的源。
技术实现思路
根据本公开的实施例,一种计算机实现的方法包括:由至少一个处理器运行收集例程以从用户收集原始数据;由至少一个处理器以原始数据的形式从用户接收收集例程的结果,收集例程的结果可以存储在中央数据储存库中;由至少一个处理器运行命令以生成图形用户界面(GUI);由至少一个处理器显示GUI;从GUI接收用户输入,以指定至少一个要被监控的变量以进行污点分析;由至少一个处理器以规则的间隔实行污点分析,以针对预定义的规则检查原始数据,以确定原始数据的被污点或未被污点的污点状态;在GUI上可视地表示污点分析的结果;由至少一个处理器根据污点状态,以规则的间隔将原始数据标记为被污点或未被污点;由至少一个处理器输入将在利用标记数据的过程中使用的标记数据;以及由至少一个处理器对污点数据进行周期性地丢弃、进一步监控或选择性地采取其他动作。根据本公开的实施例,一种系统包括存储器和至少一个处理器,至少一个处理器耦合到所述存储器并且被配置为:运行收集例程以从用户收集原始数据;将原始数据存储在中央数据储存库中;运行命令以生成图形用户界面(GUI);显示所述GUI;从GUI接收用户输入,以指定至少一个要被监控的变量以进行污点分析;以规则的间隔实行污点分析,以针对预定义的规则检查原始数据,以确定原始本文档来自技高网
...

【技术保护点】
1.一种计算机实现的方法,包括:/n由至少一个处理器运行收集例程以从用户收集原始数据;/n由所述至少一个处理器以所述原始数据的形式从所述用户接收所述收集例程的结果,所述收集例程的结果可以存储在中央数据储存库中;/n由所述至少一个处理器运行命令以生成图形用户界面(GUI);/n由所述至少一个处理器显示所述GUI;/n从所述GUI接收用户输入,以指定至少一个要被监控的变量以进行污点分析;/n由所述至少一个处理器以规则的间隔实行污点分析,以针对预定义的规则检查所述原始数据,以确定所述原始数据的被污点或未被污点的污点状态;/n在所述GUI上可视地表示所述污点分析的结果;/n由所述至少一个处理器根据所述污点状态,以所述规则的间隔将所述原始数据标记为被污点或未被污点;/n由所述至少一个处理器输入将在利用标记数据的过程中使用的所述标记数据;以及/n由所述至少一个处理器对污点数据进行周期性地丢弃、进一步监控或选择性地采取其他动作。/n

【技术特征摘要】
20191220 US 16/722,5641.一种计算机实现的方法,包括:
由至少一个处理器运行收集例程以从用户收集原始数据;
由所述至少一个处理器以所述原始数据的形式从所述用户接收所述收集例程的结果,所述收集例程的结果可以存储在中央数据储存库中;
由所述至少一个处理器运行命令以生成图形用户界面(GUI);
由所述至少一个处理器显示所述GUI;
从所述GUI接收用户输入,以指定至少一个要被监控的变量以进行污点分析;
由所述至少一个处理器以规则的间隔实行污点分析,以针对预定义的规则检查所述原始数据,以确定所述原始数据的被污点或未被污点的污点状态;
在所述GUI上可视地表示所述污点分析的结果;
由所述至少一个处理器根据所述污点状态,以所述规则的间隔将所述原始数据标记为被污点或未被污点;
由所述至少一个处理器输入将在利用标记数据的过程中使用的所述标记数据;以及
由所述至少一个处理器对污点数据进行周期性地丢弃、进一步监控或选择性地采取其他动作。


2.根据权利要求1所述的方法,其中,对所述污点数据进行周期性地丢弃、进一步监控或选择性地采取其他动作包括:以被动方式以规则的间隔监控所述污点数据,其中,所述污点数据被记录以供以后查看或者被丢弃。


3.根据权利要求1所述的方法,其中,对所述污点数据进行周期性地丢弃、进一步监控或选择性地采取其他动作包括:以主动方式以规则的间隔监控所述污点数据,其中,每次访问所述污点数据时,所述过程被中断。


4.根据权利要求3所述的方法,还包括在所述GUI上显示用户提示,呈现用于在中断点监控所述过程或者用于忽略并继续所述过程的选项。


5.根据权利要求4所述的方法,其中,当选择监控选项时:
在所述GUI上显示所述中断点处的、所述过程中使用的变量的值。


6.根据权利要求1所述的方法,其中,实行所述污点分析包括:
将所述原始数据作为输入馈送到神经网络机器学习分类器,所述神经网络机器学习分类器具有接收所述原始数据作为多个输入的输入层,以及包括第一节点和第二节点的输出层,其中,所述第一节点指示表示所述原始数据的总体可靠性的值,并且所述第二节点指示表示所述原始数据的总体不可靠性的值,其中,当所述第二节点具有比所述第一节点更大的值时,所述原始数据总体被认为被污点,并且当所述第一节点具有比所述第二节点更大的值时,所述原始数据总体被认为未被污点。


7.一种系统,包括:
存储器;以及
至少一个处理器,耦合到所述存储器,并且被配置为:
运行收集例程以从用户收集原始数据;
将所述原始数据存储在中央数据储存库中;
运行命令以生成图形用户界面(GUI);
显示所述GUI;
从所述GUI接收用户输入,以指定至少一个要被监控的变量以进行污点分析;
以规则的间隔实行污点分析,以针对预定义的规则检查所述原始数据,以确定所述原始数据的被污点或未被污点的污点状态;
在所述GUI上可视地表示所述污点分析的结果;
根据所述污点状态,以所述规则的间隔将所述原始数据标记为被污点或未被污点;
输入将在利用标记数据的过程中使用的所述标记数据;以及
对污点数据进行周期性地丢弃、进一步监控或选择性地采取其他动作。


8.根据权利要求7所述的系统,其中,为了对所述污点数据进行周期性地丢弃、进一步监控或选择性采取其他动作,所述至少一个处理器还被配置为:以被动方式以规则的间隔监控所述污点数据,其中,所述污点数据被记录以供以后查看或者被丢弃。


9.根据权利要求7所述的系统,其中,为...

【专利技术属性】
技术研发人员:F洛赫B罗尔
申请(专利权)人:SAP欧洲公司
类型:发明
国别省市:德国;DE

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1