CN115309554A - 基于兼容层运行的应用的排错方法、排错系统及计算设备 - Google Patents

基于兼容层运行的应用的排错方法、排错系统及计算设备 Download PDF

Info

Publication number
CN115309554A
CN115309554A CN202210945033.8A CN202210945033A CN115309554A CN 115309554 A CN115309554 A CN 115309554A CN 202210945033 A CN202210945033 A CN 202210945033A CN 115309554 A CN115309554 A CN 115309554A
Authority
CN
China
Prior art keywords
interface
information
operating system
client
application
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.)
Pending
Application number
CN202210945033.8A
Other languages
English (en)
Inventor
龙超
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Uniontech Software Technology Co Ltd
Original Assignee
Uniontech Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Uniontech Software Technology Co Ltd filed Critical Uniontech Software Technology Co Ltd
Priority to CN202210945033.8A priority Critical patent/CN115309554A/zh
Publication of CN115309554A publication Critical patent/CN115309554A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5021Priority

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于兼容层运行的应用的排错方法、排错系统及计算设备,涉及计算机及操作系统技术领域。方法在服务器中执行,服务器分别与第一客户端、第二客户端通信连接;方法包括步骤:从第一客户端获取第一应用在第一操作系统上运行时的第一接口调用信息,并从第二客户端获取第一应用在兼容层中运行时的第二接口调用信息;利用排错算法,将第一接口调用信息与第二接口调用信息进行比对,以确定第一接口调用信息与第二接口调用信息的差异信息,以便基于差异信息确定第一应用在兼容层中运行的异常信息。根据本发明的技术方案,可以高效、准确地定位基于兼容层运行的应用的异常问题。

Description

基于兼容层运行的应用的排错方法、排错系统及计算设备
本申请是2022年6月29日提交的发明专利申请2022107457972的分案申请。
技术领域
本发明涉及计算机及操作系统技术领域,尤其涉及一种基于兼容层运行的应用的排错方法、排错系统及计算设备。
背景技术
目前,Linux桌面操作系统使用率低,应用软件缺乏,很少有独立软件生产商为其开发Linux原生应用程序,这导致政府或企业在从Windows系统迁移到Linux系统之后出现大量行业应用无法使用的问题,严重影响了Linux系统替代Windows系统的发展进程,进一步阻碍了Linux桌面操作系统的发展。
Linux系统厂商通常利用Windows系统的兼容层Wine(能够在包含Linux、Mac OS X以及BSD在内的多种POSIX兼容操作系统上运行Windows应用程序的兼容层)来实现将Windows系统的应用程序迁移至Linux系统。目前,最新版的Wine可以稳定运行成千上万种Windows应用程序。
由于Wine诞生于西方社区,开发者绝大部分是西方人士,因而可以更好地兼容西方国家开发的Windows应用。而我国开发的大部分中文版本的Windows应用都需要开发人员对兼容层进行适配,即,对基于兼容层运行的应用进行排错处理、定位异常问题,通过处理异常后才能使得Windows应用在兼容层完美运行。因此,如何提高开发人员定位异常问题的效率是加快Windows系统向Linux系统迁移的关键。
为此,需要一种基于兼容层运行的应用的排错方法,以解决上述方案中存在的问题。
发明内容
为此,本发明提供一种基于兼容层运行的应用的排错方法及排错系统,以解决或至少缓解上面存在的问题。
根据本发明的一个方面,提供一种基于兼容层运行的应用的排错方法,在服务器中执行,所述服务器分别与第一客户端、第二客户端通信连接;所述第一客户端运行有第一操作系统,所述第一操作系统上运行有第一应用;所述第二客户端运行有第二操作系统,所述第二操作系统上布置有第一操作系统的兼容层,且所述兼容层中运行有第一应用;所述方法包括步骤:从所述第一客户端获取所述第一应用在所述第一操作系统上运行时的第一接口调用信息,并从所述第二客户端获取所述第一应用在所述兼容层中运行时的第二接口调用信息;利用排错算法,将所述第一接口调用信息与第二接口调用信息进行比对,以确定所述第一接口调用信息与第二接口调用信息的差异信息,以便基于所述差异信息确定所述第一应用在所述兼容层中运行的异常信息。
可选地,在根据本发明的基于兼容层运行的应用的排错方法中,所述第一客户端适于:通过钩子模块在所述第一操作系统上运行所述第一应用,并采集所述第一应用在所述第一操作系统上运行时的第一接口调用信息,将所述第一接口调用信息发送至所述服务器;所述第二客户端适于:通过钩子模块在所述兼容层中运行所述第一应用,并采集所述第一应用在所述兼容层中运行时的第二接口调用信息,将所述第二接口调用信息发送至所述服务器。
可选地,在根据本发明的基于兼容层运行的应用的排错方法中,利用排错算法,将所述第一接口调用信息与第二接口调用信息进行比对的步骤包括:将所述第一接口调用信息与第二接口调用信息显示在图形用户界面上;获取从所述第一接口调用信息中选择的第一目标数据、以及从所述第二接口调用信息中选择的第二目标数据;利用排错算法,将所述第一目标数据与第二目标数据进行比对,以确定所述第一目标数据与第二目标数据的差异信息。
可选地,在根据本发明的基于兼容层运行的应用的排错方法中,接口调用信息包括接口调用次数、接口返回值、接口参数值,且接口调用次数、接口返回值、接口参数值具有不同的排错优先级;确定所述第一接口调用信息与第二接口调用信息的差异信息包括:基于接口调用信息的排错优先级高低顺序,来确定所述第一接口调用信息与第二接口调用信息的差异信息。
可选地,在根据本发明的基于兼容层运行的应用的排错方法中,利用排错算法,将所述第一接口调用信息与第二接口调用信息进行比对的步骤包括:将所述第一接口调用信息转换为相应的第一调用堆栈数据,存储在第一关联容器中;将所述第二接口调用信息转换为相应的第二调用堆栈数据结构,存储在第二关联容器中;基于进程标识和线程标识,将所述第一关联容器中的第一调用堆栈数据与第二关联容器中的第二调用堆栈数据建立关联;遍历所述第一关联容器和第二关联容器,从所述第一关联容器、第二关联容器中获取进程标识和线程标识一致的第一线程函数调用列表、第二线程函数调用列表;将所述第一线程函数调用列表与第二线程函数调用列表进行比对,判断所述第一线程函数调用列表与第二线程函数调用列表中的接口调用次数、接口返回值、接口参数值是否一致,以确定差异信息。
可选地,在根据本发明的基于兼容层运行的应用的排错方法中,基于进程标识和线程标识,将所述第一关联容器中的第一调用堆栈数据与第二关联容器中的第二调用堆栈数据建立关联,包括:遍历第一关联容器、第二关联容器,如果创建进程接口的参数一致,则基于同一进程标识建立进程关联;如果创建线程接口的参数一致,则基于同一线程标识建立线程关联。
可选地,在根据本发明的基于兼容层运行的应用的排错方法中,所述方法还包括步骤:将所述差异信息存储在列表中;输出所述差异信息以进行显示。
可选地,在根据本发明的基于兼容层运行的应用的排错方法中,所述第一操作系统为Windows操作系统,所述第二操作系统为Linux操作系统。
根据本发明的一个方面,提供一种排错系统,包括:第一客户端,运行有第一操作系统,所述第一操作系统上运行有第一应用;第二客户端,运行有第二操作系统,所述第二操作系统上布置有第一操作系统的兼容层,且所述兼容层中运行有第一应用;服务器,分别与所述第一客户端、第二客户端通信连接,适于执行如上所述的基于兼容层运行的应用的排错方法。
根据本发明的一个方面,提供一种计算设备,包括:至少一个处理器;存储器,存储有程序指令,其中,程序指令被配置为适于由上述至少一个处理器执行,所述程序指令包括用于执行如上所述的基于兼容层运行的应用的排错方法的指令。
根据本发明的一个方面,提供一种存储有程序指令的可读存储介质,当该程序指令被计算设备读取并执行时,使得该计算设备执行如上所述的基于兼容层运行的应用的排错方法。
根据本发明的技术方案,提供了一种基于兼容层运行的应用的排错方法,其中,通过钩子模块在第一客户端的第一操作系统上运行第一应用,采集第一应用在第一操作系统上运行时的第一接口调用信息;以及,通过钩子模块在第二客户端的兼容层中运行第一应用,采集第一应用在兼容层中运行时的第二接口调用信息。通过排错算法将第一/第二接口调用信息转换为统一的数据格式来进行比对,可以提高比对效率和准确率,而且,根据比对出的差异信息可以确定第一应用在兼容层中运行的异常信息,从而能实现高效、准确地对基于兼容层运行的第一应用中的异常问题进行定位。
进一步地,根据本发明的排错算法,在将第一接口调用信息与第二接口调用信息进行比对时,是将接口调用信息转换为对应的调用堆栈数据存储在内存中的Map容器中,后续的排错比对数据是直接从内存的Map容器中的线程函数调用列表中读取,且差异信息记录的是线程函数调用列表中的索引。这样,在执行排错算法的过程中,不存在数据拷贝与数据移动,从而可以保证排错算法可以高效、稳定地运行。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的排错系统100的示意图;
图2示出了根据本发明一个实施例的计算设备200的示意图;
图3示出了根据本发明一个实施例的基于兼容层运行的应用的排错方法300的流程图;
图4示出了根据本发明一个实施例的进程与关联容器(Map)的映射关系示意图;
图5示出了根据本发明一个实施例的排错结果列表的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的排错系统100的示意图。
如图1所示,排错系统100包括服务器150、第一客户端110、第二客户端120。第一客户端110、第二客户端120分别与服务器150通信连接,例如可以通过有线或无线的方式网络连接。
服务器150可以提供排错处理服务。具体地,服务器150可以实现为桌面电脑、笔记本电脑、处理器芯片、手机、平板电脑等计算设备,但不限于此,也可以是驻留在计算设备上的应用程序。
第一客户端110、第二客户端120为用户所使用的终端设备。具体地,第一客户端110、第二客户端120可以是桌面电脑、笔记本电脑等个人计算机,也可以是手机、平板电脑、多媒体设备、智能可穿戴设备等,但不限于此。
根据本发明的一个实施例,第一客户端110中运行有第一操作系统,并在第一操作系统上运行有第一应用。应当指出,第一应用是基于第一操作系统构建的、适于运行在第一操作系统上的应用。本发明对第一应用的具体类型不做限制。
第二客户端120中运行有第二操作系统,第二操作系统上布置有第一操作系统的兼容层,并在兼容层中运行有第一应用。这里,兼容层例如可以实现为Wine。
需要说明的是,兼容层可以适配基于第一操作系统构建的应用,换言之,兼容层中可以运行第一操作系统的应用。通过在第二客户端120的第二操作系统上部署兼容层,从而可以在第二操作系统上的兼容层中运行第一操作系统的应用(例如第一应用)。
在一个实施例中,第一操作系统可以为Windows操作系统。第二操作系统可以为Linux操作系统。
根据本发明的实施例,通过在第一客户端110的第一操作系统上运行第一应用,并且,在第二客户端120的第二操作系统上的兼容层中运行第一应用。服务器150通过从第一客户端110获取第一应用在第一操作系统上运行时的第一接口调用信息,并从第二客户端120获取第一应用在兼容层中运行时的第二接口调用信息。随后,服务器150可以利用排错算法,将第一接口调用信息与第二接口调用信息进行比对,可以获取到第一接口调用信息与第二接口调用信息之间的差异信息。这样,便可以基于差异信息来确定第一应用在兼容层中运行的异常信息,从而能实现对基于兼容层运行的第一应用中的异常信息进行定位。
在本发明的实施例中,服务器150适于执行本发明的基于兼容层运行的应用的排错方法300。本发明的基于兼容层运行的应用的排错方法300将在下文中详述。
在一个实施例中,服务器150中包括排错处理装置250,排错处理装置250执行本发明的基于兼容层运行的应用的排错方法300。
在本发明的一个实施例中,服务器150可以实现为如下所示的计算设备。
图2示出了根据本发明一个实施例的计算设备200的示意图。如图2所示,在基本配置中,计算设备200包括至少一个处理单元202和系统存储器204。根据一个方面,取决于计算设备的配置和类型,处理单元202可以实现为处理器。系统存储器204包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪速存储器、或者这样的存储器的任何组合。根据一个方面,系统存储器204中包括操作系统205。
根据一个方面,操作系统105例如适合于控制计算设备200的操作。此外,示例结合图形库、其他操作系统、或任何其他应用程序而被实践,并且不限于任何特定的应用或系统。在图2中通过在虚线内的那些组件示出了该基本配置。根据一个方面,计算设备200具有额外的特征或功能。例如,根据一个方面,计算设备200包括额外的数据存储设备(可移动的和/或不可移动的),例如磁盘、光盘、或者磁带。这样额外的存储在图2中是由可移动存储设备209和不可移动存储设备210示出的。
如在上文中所陈述的,根据一个方面,在系统存储器204中存储有程序模块。根据一个方面,程序模块可以包括一个或多个应用程序,本发明不限制应用程序的类型,例如应用程序可以包括:电子邮件和联系人应用程序、文字处理应用程序、电子表格应用程序、数据库应用程序、幻灯片展示应用程序、绘画或计算机辅助应用程序、网络浏览器应用程序等。在根据本发明的实施例中,程序模块中的应用程序可以包括排错处理装置250,排错处理装置250被配置为执行本发明的基于兼容层运行的应用的排错方法300。
根据一个方面,可以在包括分立电子元件的电路、包含逻辑门的封装或集成的电子芯片、利用微处理器的电路、或者在包含电子元件或微处理器的单个芯片上实践示例。例如,可以经由其中在图2中所示出的每个或许多组件可以集成在单个集成电路上的片上系统(SOC)来实践示例。根据一个方面,这样的SOC设备可以包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元、以及各种应用功能,其全部作为单个集成电路而被集成(或“烧”)到芯片基底上。当经由SOC进行操作时,可以经由在单个集成电路(芯片)上与计算设备200的其他组件集成的专用逻辑来对在本文中所描述的功能进行操作。还可以使用能够执行逻辑操作(例如AND、OR和NOT)的其他技术来实践本发明的实施例,所述其他技术包括但不限于机械、光学、流体、和量子技术。另外,可以在通用计算机内或在任何其他任何电路或系统中实践本发明的实施例。
根据一个方面,计算设备200还可以具有一个或多个输入设备212,例如键盘、鼠标、笔、语音输入设备、触摸输入设备等。还可以包括输出设备214,例如显示器、扬声器、打印机等。前述设备是示例并且也可以使用其他设备。计算设备200可以包括允许与其他计算设备218进行通信的一个或多个通信连接216。合适的通信连接216的示例包括但不限于:RF发射机、接收机和/或收发机电路;通用串行总线(USB)、并行和/或串行端口。
如在本文中所使用的术语计算机可读介质包括计算机存储介质。计算机存储介质可以包括以任何用于存储信息(例如,计算机可读指示、数据结构、或程序模块)的方法或技术来实现的易失性的和非易失性的、可移动的和不可移动的介质。系统存储器204、可移动存储设备209、和不可移动存储设备210都是计算机存储介质的示例(即,存储器存储)。计算机存储介质可以包括随机存取存储器(RAM)、只读存储器(ROM)、电可擦只读存储器(EEPROM)、闪速存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光存储、盒式磁带、磁带、磁盘存储器或其他磁存储设备、或者可用于存储信息并且可以由计算设备200访问的任何其他制品。根据一个方面,任何这样的计算机存储介质都可以是计算设备200的一部分。计算机存储介质不包括载波或其他经传播的数据信号。
根据一个方面,通信介质是由计算机可读指令、数据结构、程序模块、或者经调制的数据信号(例如,载波或其他传输机制)中的其他数据实施的,并且包括任何信息传递介质。根据一个方面,术语“经调制的数据信号”描述了具有一个或多个特征集或者以将信息编码在信号中的方式改变的信号。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声学、射频(RF)、红外线的、以及其他无线介质之类的无线介质。
在根据本发明的实施例中,计算设备200被配置为执行根据本发明的基于兼容层运行的应用的排错方法300。计算设备200包括一个或多个处理器、以及存储有程序指令的一个或多个可读存储介质,当程序指令被配置为由一个或多个处理器执行时,使得计算设备执行本发明实施例中的基于兼容层运行的应用的排错方法300。
根据本发明的一个实施例,计算设备200中的排错处理装置250被配置为执行根据本发明的基于兼容层运行的应用的排错方法300。其中,排错处理装置250中包含用于执行本发明的基于兼容层运行的应用的排错方法300的多条程序指令,这些程序指令可以指示处理器执行根据本发明的基于兼容层运行的应用的排错方法300。
图3示出了根据本发明一个实施例的基于兼容层运行的应用的排错方法300的流程图。方法300适于在服务器150(例如前述计算设备200)中执行,具体可以在服务器150的排错处理装置250执行。
如前文所述,服务器150分别与第一客户端110、第二客户端120通信连接。其中,第一客户端110中运行有第一操作系统,并在第一操作系统上运行有第一应用。第二客户端120中运行有第二操作系统,第二操作系统上布置有第一操作系统的兼容层(Wine),并在兼容层中运行有第一应用。应当指出,第一应用是基于第一操作系统构建的、适于运行在第一操作系统上的应用。本发明对第一应用的具体类型不做限制。
根据本发明的实施例,通过在第一客户端110的第一操作系统上运行第一应用,并且,在第二客户端120的第二操作系统上的兼容层中运行第一应用。进而,服务器150可以执行本发明的基于兼容层运行的应用的排错方法300。
如图3所示,方法300始于步骤S310。
在步骤S310中,从第一客户端110获取第一应用在第一操作系统上运行时的第一接口调用信息,并从第二客户端120获取第一应用在兼容层中运行时的第二接口调用信息。
随后,在步骤S320中,利用排错算法,将第一接口调用信息与第二接口调用信息进行比对,以获取第一接口调用信息与第二接口调用信息之间的差异信息。这样,便可以基于差异信息来确定第一应用在兼容层中运行的异常信息,从而实现对基于兼容层运行的第一应用中的异常问题进行定位。
需要说明的是,兼容层可以适配基于第一操作系统构建的应用,换言之,兼容层中可以运行第一操作系统的应用。通过在第二客户端120的第二操作系统上部署兼容层,从而可以在第二操作系统上的兼容层中运行第一操作系统的应用(例如第一应用)。
在一个实施例中,第一操作系统可以为Windows操作系统。第二操作系统可以为Linux操作系统。但,应当指出,本发明不限于第一操作系统、第二操作系统的具体类型。
根据本发明的一个实施例,对于第一客户端110、第二客户端120,均可以通过钩子模块运行第一应用并采集第一应用运行时的接口调用信息。
具体地,第一客户端110可以通过钩子模块,在第一客户端110的第一操作系统上运行第一应用,并采集第一应用在第一操作系统上运行时的第一接口调用信息。随后,将第一接口调用信息发送至服务器150。
第二客户端120可以通过钩子模块,在第二客户端120的兼容层中运行第一应用,并采集第一应用在兼容层中运行时的第二接口调用信息。随后,将第二接口调用信息发送至服务器150。
在一个实施例中,服务器150在获取到第一接口调用信息、第二接口调用信息后,可以将第一接口调用信息、第二接口调用信息存储在服务器150的缓存(Redis)中。
需要说明的是,钩子模块即是Hook模块。Hook即是钩子函数,在程序没有调用函数之前,钩子函数先得到控制权,此时钩子函数既可以加工处理(改变)该函数的执行行为,还可以强制结束,不调用真正的函数。
在一种实现方式中,在第一客户端110的第一操作系统上运行第一应用、在第二客户端120的第二操作系统上的兼容层中运行第一应用之前,可以通过以下方法来实现Hook模块:通过创建一个Hook模块,并预先加载接口数据库,接口数据库中存储有第一操作系统的所有接口原型及接口信息,接口信息例如包括参数类型、参数值、参数个数、返回值等。随后,可以从第一应用的PE(Portable Executable,意为可移植的可执行文件,是Windows程序的存储格式)文件中加载导出函数地址表(IAT,Import Address Table),并将导出函数地址表中的每个接口地址替换为拦截函数地址,并记录调用进程和调用线程信息。
这样,便可以通过Hook模块在第一客户端110的第一操作系统上、以及第二客户端120的兼容层中运行第一应用,并采集第一应用运行时的接口调用信息。
根据本发明的一个实施例,利用排错算法将第一接口调用信息与第二接口调用信息进行比对,具体可以按照以下方式执行。
首先,将第一接口调用信息与第二接口调用信息显示在图形用户界面上,通过在与服务器150通信相连的显示设备上显示该图形用户界面,以实现将接口调用信息输出显示。这样,用户可以从图形用户界面中查看第一接口调用信息、第二接口调用信息,并从第一接口调用信息、第二接口调用信息中选择进行比对的目标数据。
随后,服务器150可以获取到用户从图形用户界面中显示的第一接口调用信息中选择的第一目标数据、以及从第二接口调用信息中选择的第二目标数据。进而,服务器150利用排错算法,将第一目标数据与第二目标数据进行比对,以确定第一目标数据与第二目标数据的差异信息。
根据本发明的一个实施例,接口调用信息可以包括接口调用次数、接口返回值、接口参数值等。其中,接口调用次数、接口返回值、接口参数值具有不同的排错优先级。
服务器150在确定第一接口调用信息与第二接口调用信息的差异信息时,可以基于接口调用信息的排错优先级高低顺序,来依次确定第一接口调用信息与第二接口调用信息的差异信息。
在一个实施例中,接口调用信息的排错优先级高低顺序依次为:接口调用次数、接口返回值、接口参数值。
根据本发明的一个实施例,可以按照以下步骤来将第一接口调用信息与第二接口调用信息进行比对。
首先,分别对第一接口调用信息、第二接口调用信息进行数据序列化为栈数据结构。具体地,将第一接口调用信息转换为相应的第一调用堆栈数据,并存储在第一关联容器中。将第二接口调用信息转换为相应的第二调用堆栈数据结构,并存储在第二关联容器中。
这里,第一关联容器、第二关联容器为内存中的数据存储容器,例如为Map容器。Map是按照特定顺序存储由键值Key和映射值Value组合而成的元素的集合。例如,第一关联容器可以为Map1,第二关联容器可以为Map2。
需要说明的是,Map对应的是(第一应用的)进程,进程可以包含多个线程,其中每个线程可以对应一个线程函数调用列表。图4示出了根据本发明一个实施例的进程与关联容器(Map)的映射关系示意图。如图4所示,进程可以包含第一线程、第二线程、第三线程,分别对应第一线程函数调用列表、第二线程函数调用列表、第三线程函数调用列表。在本发明的关联容器Map中,可以基于进程标识和线程标识(作为键值Key),来建立进程包含的每个线程与线程函数调用列表之间的关联关系,以将进程包含的每个线程与对应的线程函数调用列表相关联地存储在关联容器Map中。即,将进程标识和线程标识作为键值Key,将线程对应的线程函数调用列表作为与键值相关联的映射值Value。
这样,可以实现将第一客户端110的第一操作系统上运行第一应用时的第一接口调用信息转换成的第一调用堆栈数据,基于第一关联容器建立每个线程与对应的线程函数调用列表的关联关系;将第二客户端120的兼容层中运行第一应用时的第二接口调用信息转换成的第一调用堆栈数据,基于第一关联容器建立每个线程与对应的线程函数调用列表的关联关系。
接着,基于进程标识和线程标识,将第一关联容器中的第一调用堆栈数据与第二关联容器中的第二调用堆栈数据建立关联。也即,将第一接口调用信息对应的第一调用堆栈数据与第二接口调用信息对应的第二调用堆栈数据建立关联。
具体地,通过遍历第一关联容器、第二关联容器,以查找创建进程的接口,并将接口的参数进行对比,如果参数一致,则将第一关联容器、第二关联容器中的相应进程基于进程标识建立关联,具体可以将第一关联容器、第二关联容器中的相应进程标识修改为同一个进程标识。并且,从第一关联容器、第二关联容器中查找创建每个线程的接口,并对比接口的参数,如果参数一致,则将第一关联容器、第二关联容器中的相应线程基于线程标识建立关联,具体可以将第一关联容器、第二关联容器中的相应线程标识修改为同一个线程标识。也就是说,通过遍历第一关联容器、第二关联容器,如果创建进程接口的参数一致,则基于同一进程标识建立进程关联;如果创建线程接口的参数一致,则基于同一线程标识建立线程关联。
接下来,遍历第一关联容器和第二关联容器,通过比对进程标识和线程标识是否一致,如果一致,则可以从第一关联容器、第二关联容器中获取进程标识和线程标识一致的一组或多组线程函数调用列表。这里,从第一关联容器获取到的是第一线程函数调用列表,从第二关联容器获取到的是第二线程函数调用列表。即,从第一关联容器、第二关联容器中依次获取进程标识和线程标识一致的一组或多组第一线程函数调用列表、第二线程函数调用列表。
进而,通过将第一线程函数调用列表与第二线程函数调用列表中的数据进行比对,判断第一线程函数调用列表与第二线程函数调用列表中的接口调用次数、接口返回值、接口参数值是否一致,从而可以确定第一线程函数调用列表与第二线程函数调用列表中的差异信息。这里,只需记录第一线程函数调用列表与第二线程函数调用列表中的所有差异信息的索引,即可确定为第一接口调用信息与第二接口调用信息的差异信息。
例如,差异信息可以包括:第二线程函数调用列表相比于第一线程函数调用列表,缺少一个或多个线程信息、接口调用次数不同、接口返回值、接口参数值不同等。
可以理解,差异信息反映的是第二接口调用信息与第一接口调用信息的不同之处,从而根据差异信息可以确定第一应用在第二操作系统上的兼容层中运行时会出现的异常信息。
在一个实施例中,在确定第一接口调用信息与第二接口调用信息的差异信息之后,可以将所有差异信息(对应的索引)存储在列表(List)中,得到排错结果列表。图5示出了根据本发明一个实施例的排错结果列表的示意图。如图5所示,排错结果列表中的差异信息可以包括:tagResultNode.checktype=0x0001;tagResultNode.checktype=0x0002;tagResultNode.checktype=0x0004。
需要说明的是,根据本发明的排错算法,在将第一接口调用信息与第二接口调用信息进行比对时,是将接口调用信息转换为对应的调用堆栈数据存储在内存中的Map容器中,后续的排错比对数据是直接从内存的Map容器中的线程函数调用列表中读取,且比对结果(差异信息)记录的是线程函数调用列表中的索引,这样,不存在数据拷贝与数据移动,从而可以保证排错算法可以高效、稳定地运行,而且,无需对列表数据进行任何修改,有利于后续加入其他扩展逻辑算法。
在一个实施例中,在确定第一接口调用信息与第二接口调用信息的差异信息之后,可以输出差异信息以进行显示,即,可以显示排错结果列表。例如,将差异信息(排错结果列表)发送至与服务器通信相连的显示设备,通过显示设备显示差异信息,供用户查看。
根据本发明的基于兼容层运行的应用的排错方法,通过Hook模块在第一客户端的第一操作系统上运行第一应用,采集第一应用在第一操作系统上运行时的第一接口调用信息;并通过Hook模块在第二客户端的兼容层中运行第一应用,采集第一应用在兼容层中运行时的第二接口调用信息。通过排错算法将第一/第二接口调用信息转换为统一的数据格式来进行比对,可以提高比对效率和准确率,而且,根据比对出的差异信息可以确定第一应用在兼容层中运行的异常信息,从而,能实现高效、准确地对基于兼容层运行的第一应用中的异常问题进行定位。
进一步地,根据本发明的排错算法,在将第一接口调用信息与第二接口调用信息进行比对时,是将接口调用信息转换为对应的调用堆栈数据存储在内存中的Map容器中,后续的排错比对数据是直接从内存的Map容器中的线程函数调用列表中读取,且差异信息记录的是线程函数调用列表中的索引。这样,在执行排错算法的过程中,不存在数据拷贝与数据移动,从而可以保证排错算法可以高效、稳定地运行。
这里描述的各种技术可结合硬件或软件,或者它们的组合一起实现。从而,本发明的方法和设备,或者本发明的方法和设备的某些方面或部分可采取嵌入有形媒介,例如可移动硬盘、U盘、软盘、CD-ROM或者其它任意机器可读的存储介质中的程序代码(即指令)的形式,其中当程序被载入诸如计算机之类的机器,并被所述机器执行时,所述机器变成实践本发明的设备。
在程序代码在可编程计算机上执行的情况下,移动终端一般包括处理器、处理器可读的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入装置,和至少一个输出装置。其中,存储器被配置用于存储程序代码;处理器被配置用于根据该存储器中存储的所述程序代码中的指令,执行本发明的基于兼容层运行的应用的排错方法。
以示例而非限制的方式,可读介质包括可读存储介质和通信介质。可读存储介质存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息。通信介质一般以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块或其它数据,并且包括任何信息传递介质。以上的任一种的组合也包括在可读介质的范围之内。
在此处所提供的说明书中,算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与本发明的示例一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下被实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的而非限制性的,本发明的范围由所附权利要求书限定。

Claims (11)

1.一种基于兼容层运行的应用的排错方法,在服务器中执行,所述服务器分别与第一客户端、第二客户端通信连接;
所述第一客户端运行有第一操作系统,所述第一操作系统上运行有第一应用;
所述第二客户端运行有第二操作系统,所述第二操作系统上布置有第一操作系统的兼容层,且所述兼容层中运行有第一应用;
所述方法包括步骤:
从所述第一客户端获取所述第一应用在所述第一操作系统上运行时的第一接口调用信息,并从所述第二客户端获取所述第一应用在所述兼容层中运行时的第二接口调用信息;
利用排错算法,将所述第一接口调用信息与第二接口调用信息进行比对,其中,将接口调用信息转换为对应的调用堆栈数据存储在内存中的关联容器中,并从所述关联容器中的线程函数调用列表中读取数据进行比对,以确定所述第一接口调用信息与第二接口调用信息的差异信息,以便基于所述差异信息确定所述第一应用在所述兼容层中运行的异常信息。
2.如权利要求1所述的方法,其中,
所述第一客户端适于:通过钩子模块在所述第一操作系统上运行所述第一应用,并采集所述第一应用在所述第一操作系统上运行时的第一接口调用信息,将所述第一接口调用信息发送至所述服务器;
所述第二客户端适于:通过钩子模块在所述兼容层中运行所述第一应用,并采集所述第一应用在所述兼容层中运行时的第二接口调用信息,将所述第二接口调用信息发送至所述服务器。
3.如权利要求1或2所述的方法,其中,利用排错算法,将所述第一接口调用信息与第二接口调用信息进行比对的步骤包括:
将所述第一接口调用信息与第二接口调用信息显示在图形用户界面上;
获取从所述第一接口调用信息中选择的第一目标数据、以及从所述第二接口调用信息中选择的第二目标数据;
利用排错算法,将所述第一目标数据与第二目标数据进行比对,以确定所述第一目标数据与第二目标数据的差异信息。
4.如权利要求1-3中任一项所述的方法,其中,接口调用信息包括接口调用次数、接口返回值、接口参数值,且接口调用次数、接口返回值、接口参数值具有不同的排错优先级;
确定所述第一接口调用信息与第二接口调用信息的差异信息包括:
基于接口调用信息的排错优先级高低顺序,来确定所述第一接口调用信息与第二接口调用信息的差异信息。
5.如权利要求1-4中任一项所述的方法,其中,利用排错算法,将所述第一接口调用信息与第二接口调用信息进行比对的步骤包括:
将所述第一接口调用信息转换为相应的第一调用堆栈数据,存储在第一关联容器中;将所述第二接口调用信息转换为相应的第二调用堆栈数据结构,存储在第二关联容器中;
基于进程标识和线程标识,将所述第一关联容器中的第一调用堆栈数据与第二关联容器中的第二调用堆栈数据建立关联;
遍历所述第一关联容器和第二关联容器,从所述第一关联容器、第二关联容器中获取进程标识和线程标识一致的第一线程函数调用列表、第二线程函数调用列表;
将所述第一线程函数调用列表与第二线程函数调用列表进行比对,判断所述第一线程函数调用列表与第二线程函数调用列表中的接口调用次数、接口返回值、接口参数值是否一致,以确定差异信息。
6.如权利要求5所述的方法,其中,基于进程标识和线程标识,将所述第一关联容器中的第一调用堆栈数据与第二关联容器中的第二调用堆栈数据建立关联,包括:
遍历第一关联容器、第二关联容器,如果创建进程接口的参数一致,则基于同一进程标识建立进程关联;如果创建线程接口的参数一致,则基于同一线程标识建立线程关联。
7.如权利要求1-6中任一项所述的方法,其中,所述方法还包括步骤:
将所述差异信息存储在列表中;
输出所述差异信息以进行显示。
8.如权利要求1-7中任一项所述的方法,其中,
所述第一操作系统为Windows操作系统,所述第二操作系统为Linux操作系统。
9.一种排错系统,包括:
第一客户端,运行有第一操作系统,所述第一操作系统上运行有第一应用;
第二客户端,运行有第二操作系统,所述第二操作系统上布置有第一操作系统的兼容层,且所述兼容层中运行有第一应用;
服务器,分别与所述第一客户端、第二客户端通信连接,适于执行如权利要求1-8中任一项所述的基于兼容层运行的应用的排错方法。
10.一种计算设备,包括:
至少一个处理器;以及
存储器,存储有程序指令,其中,所述程序指令被配置为适于由所述至少一个处理器执行,所述程序指令包括用于执行如权利要求1-8中任一项所述的方法的指令。
11.一种存储有程序指令的可读存储介质,当所述程序指令被计算设备读取并执行时,使得所述计算设备执行如权利要求1-8中任一项所述方法。
CN202210945033.8A 2022-06-29 2022-06-29 基于兼容层运行的应用的排错方法、排错系统及计算设备 Pending CN115309554A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210945033.8A CN115309554A (zh) 2022-06-29 2022-06-29 基于兼容层运行的应用的排错方法、排错系统及计算设备

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210745797.2A CN114816772B (zh) 2022-06-29 2022-06-29 基于兼容层运行的应用的排错方法、排错系统及计算设备
CN202210945033.8A CN115309554A (zh) 2022-06-29 2022-06-29 基于兼容层运行的应用的排错方法、排错系统及计算设备

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202210745797.2A Division CN114816772B (zh) 2022-06-29 2022-06-29 基于兼容层运行的应用的排错方法、排错系统及计算设备

Publications (1)

Publication Number Publication Date
CN115309554A true CN115309554A (zh) 2022-11-08

Family

ID=82523200

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202210945033.8A Pending CN115309554A (zh) 2022-06-29 2022-06-29 基于兼容层运行的应用的排错方法、排错系统及计算设备
CN202210745797.2A Active CN114816772B (zh) 2022-06-29 2022-06-29 基于兼容层运行的应用的排错方法、排错系统及计算设备

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202210745797.2A Active CN114816772B (zh) 2022-06-29 2022-06-29 基于兼容层运行的应用的排错方法、排错系统及计算设备

Country Status (1)

Country Link
CN (2) CN115309554A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115454827B (zh) * 2022-08-23 2023-08-11 中科方德软件有限公司 兼容性检测方法、系统、设备和介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1731347A (zh) * 2004-08-06 2006-02-08 梁肇新 基于Linux的Windows软件兼容层体系结构
CN108170503B (zh) * 2018-01-24 2022-04-12 腾讯科技(深圳)有限公司 一种跨系统运行安卓应用的方法、终端及存储介质
US10970136B1 (en) * 2019-10-03 2021-04-06 Caret Holdings, Inc. Adaptive application version integration support
CN113934642B (zh) * 2021-11-19 2024-05-14 四川启睿克科技有限公司 一种基于动静态结合的软件兼容性测试方法
CN114510267B (zh) * 2022-04-20 2023-03-21 麒麟软件有限公司 基于Linux系统的程序ABI接口兼容性计算方法

Also Published As

Publication number Publication date
CN114816772B (zh) 2022-09-06
CN114816772A (zh) 2022-07-29

Similar Documents

Publication Publication Date Title
EP3433732B1 (en) Converting visual diagrams into code
CN109783346B (zh) 基于关键字驱动的自动化测试方法、装置及终端设备
CN106649110B (zh) 软件测试方法及系统
US11163560B1 (en) Methods and arrangements to process comments
CN114816772B (zh) 基于兼容层运行的应用的排错方法、排错系统及计算设备
EP2951680B1 (en) Acquiring identification of an application lifecycle management entity associated with similar code
CN114880289A (zh) 一种文件分组显示方法及计算设备
CN114816993A (zh) 一种全链路接口测试方法、系统、介质及电子设备
CN116339818B (zh) 代码变更类型的筛选方法、电子设备及可读存储介质
CN109446077A (zh) 一种数据库测试方法及装置
CN115080114B (zh) 应用程序的移植处理方法、装置和介质
CN114637672A (zh) 自动化数据测试方法、装置、计算机设备及存储介质
CN112948264A (zh) 测试任务的执行方法及装置、系统、存储介质、电子装置
CN115328816B (zh) 测试用例管理方法、装置、计算设备及存储介质
CN116578583B (zh) 异常语句识别方法、装置、设备、存储介质
CN117008972B (zh) 一种指令分析方法、装置、计算设备及存储介质
CN118055064A (zh) 路由信息同步方法、装置、计算设备及存储介质
CN111414162B (zh) 一种数据处理方法、装置及其设备
CN115904953A (zh) 测试方法、装置、计算设备及存储介质
CN117891723A (zh) 一种代码检查方法、计算设备及存储介质
CN114840312A (zh) 一种虚拟机管理方法、装置及计算设备
CN114880286A (zh) 设备的访问方法、装置、计算设备及可读存储介质
CN113342801A (zh) 基于LabVIEW创建数据库表的方法、系统及终端
CN107168807B (zh) 函数分析方法与内存装置
CN115658075A (zh) 软件包编译方法、装置、计算设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination