CN113688056A - 一种断点调试控制方法及相关设备 - Google Patents

一种断点调试控制方法及相关设备 Download PDF

Info

Publication number
CN113688056A
CN113688056A CN202111055835.3A CN202111055835A CN113688056A CN 113688056 A CN113688056 A CN 113688056A CN 202111055835 A CN202111055835 A CN 202111055835A CN 113688056 A CN113688056 A CN 113688056A
Authority
CN
China
Prior art keywords
code
breakpoint
file
position information
information
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
CN202111055835.3A
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.)
Jingdong Technology Holding Co Ltd
Original Assignee
Jingdong Technology Holding 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 Jingdong Technology Holding Co Ltd filed Critical Jingdong Technology Holding Co Ltd
Priority to CN202111055835.3A priority Critical patent/CN113688056A/zh
Publication of CN113688056A publication Critical patent/CN113688056A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3628Software debugging of optimised code

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提出的断点调试控制方法及相关设备,可以获得调试器对目标源代码文件中的源代码设置的断点位置信息,在预先生成的代码位置信息文件中,确定与断点位置信息相匹配的合并后断点位置信息,代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,指令代码运行引擎在加载合并后代码的过程中,在合并后断点位置信息对应的代码位置处暂停加载。本发明可以在调试器对目标源代码文件进行断点调试时,按照确定出的合并后断点位置信息,指令代码运行引擎在加载合并后代码的过程中,在到达与断点相对应的代码位置处暂停加载,即可以在与断点相对应的目标源代码文件中的代码位置处实现中断加载。

Description

一种断点调试控制方法及相关设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种断点调试控制方法及相关设备。
背景技术
随着计算机技术的发展,应用程序的调试技术不断提高。
断点调试是对js文件进行调试的重要方式。现有技术可以通过调试器和J2V8运行引擎来实现对js文件的断点调试。其中,js文件可以是包含有js代码的文本文件。
当前,现有技术可以将多个js文件打包成一个代码合并文件。其中,代码合并文件中保存的是对多个js文件中的所有代码进行转换合并之后的代码,代码合并文件中的代码位置与源文件(即打包的前述多个js文件中的某个js文件)中的代码位置很可能是不同的。此时,现有技术在对源文件进行断点调试时,用户可以在调试器上对源文件的代码设置断点,调试器可以将断点在源文件中的代码位置信息发送至J2V8运行引擎。
但是,J2V8运行引擎的加载对象是代码合并文件,当J2V8运行引擎按照调试器所发送的代码位置信息对代码合并文件进行加载时,J2V8运行引擎可能无法在与断点相对应的源文件中的代码位置处实现中断加载。
发明内容
鉴于上述问题,本发明提供一种克服上述问题或者至少部分地解决上述问题的一种断点调试控制方法及相关设备。
一种断点调试控制方法,包括:
获得调试器对目标源代码文件中的源代码设置的断点位置信息,所述目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,所述代码合并文件是由打包程序对所述多个源代码文件进行打包生成的;
在预先生成的代码位置信息文件中,确定与所述断点位置信息相匹配的合并后断点位置信息,所述代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,所述合并后代码为所述代码合并文件中的代码;
指令代码运行引擎在加载所述合并后代码的过程中,在所述合并后断点位置信息对应的代码位置处中断加载。
可选的,在所述合并后断点位置信息对应的代码位置处中断加载之后,所述方法还包括:
获得所述代码运行引擎发送的中断加载位置信息;
按照所述代码位置信息文件,生成与所述中断加载位置信息相匹配的源代码加载位置信息;
将所述源代码加载位置信息发送至所述调试器。
可选的,所述代码位置对应信息包括有代码行数对应信息和代码列数对应信息,所述断点位置信息包括源代码断点的代码行数信息和代码列数信息。
可选的,所述在预先生成的代码位置信息文件中,确定与所述断点位置信息相匹配的合并后断点位置信息,包括:
在所述代码行数对应信息中,确定与所述源代码断点的代码行数信息相对应的合并后代码行数信息;
在所述代码列数对应信息中,确定与所述源代码断点的代码列数信息相对应的合并后代码列数信息。
可选的,在所述合并后断点位置信息对应的代码位置处中断加载之后,所述方法还包括:
获得所述代码运行引擎发送的当前堆栈信息;
将所述当前堆栈信息发送至所述调试器。
一种断点调试控制装置,包括:第一获得单元、第一确定单元和第一指令单元,其中:
所述第一获得单元,被配置为执行:获得调试器对目标源代码文件中的源代码设置的断点位置信息,所述目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,所述代码合并文件是由打包程序对所述多个源代码文件进行打包生成的;
所述第一确定单元,被配置为执行:在预先生成的代码位置信息文件中,确定与所述断点位置信息相匹配的合并后断点位置信息,所述代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,所述合并后代码为所述代码合并文件中的代码;
所述第一指令单元,被配置为执行:指令代码运行引擎在加载所述合并后代码的过程中,在所述合并后断点位置信息对应的代码位置处中断加载。
可选的,所述装置还包括:第二获得单元、信息生成单元和第一发送单元;其中:
所述第二获得单元,被配置为执行:在所述合并后断点位置信息对应的代码位置处中断加载之后,获得所述代码运行引擎发送的中断加载位置信息;
所述信息生成单元,被配置为执行:按照所述代码位置信息文件,生成与所述中断加载位置信息相匹配的源代码加载位置信息;
所述第一发送单元,被配置为执行:将所述源代码加载位置信息发送至所述调试器。
可选的,所述代码位置对应信息包括有代码行数对应信息和代码列数对应信息,所述断点位置信息包括源代码断点的代码行数信息和代码列数信息。
可选的,所述第一确定单元,包括:第二确定单元和第三确定单元;其中:
所述第二确定单元,被配置为执行:在所述代码行数对应信息中,确定与所述源代码断点的代码行数信息相对应的合并后代码行数信息;
所述第三确定单元,被配置为执行:在所述代码列数对应信息中,确定与所述源代码断点的代码列数信息相对应的合并后代码列数信息。
可选的,所述装置还包括:第三获得单元和第二发送单元;其中:
所述第三获得单元,被配置为执行:在所述合并后断点位置信息对应的代码位置处中断加载之后,获得所述代码运行引擎发送的当前堆栈信息;
所述第二发送单元,被配置为执行:将所述当前堆栈信息发送至所述调试器。
一种电子设备,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行上述断点调试控制方法。
一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现上述断点调试控制方法。
本发明提出的断点调试控制方法及相关设备,可以获得调试器对目标源代码文件中的源代码设置的断点位置信息,目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,代码合并文件是由打包程序对多个源代码文件进行打包生成的,在预先生成的代码位置信息文件中,确定与断点位置信息相匹配的合并后断点位置信息,代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,合并后代码为代码合并文件中的代码,指令代码运行引擎在加载合并后代码的过程中,在合并后断点位置信息对应的代码位置处暂停加载。本发明可以在调试器对目标源代码文件进行断点调试时,按照确定出的合并后断点位置信息,指令代码运行引擎在加载合并后代码的过程中,在到达与断点相对应的代码位置处暂停加载,即可以在与断点相对应的目标源代码文件中的代码位置处实现中断加载。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提出的第一种断点调试控制方法的流程图;
图2示出了本发明实施例提出的第四种断点调试控制方法的流程图;
图3示出了本发明实施例提出的第一种断点调试控制装置的结构示意图;
图4示出了本发明实施例提出的一种电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,本实施例提出第一种断点调试控制方法,该方法可以包括以下步骤:
S101、获得调试器对目标源代码文件中的源代码设置的断点位置信息,目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,代码合并文件是由打包程序对多个源代码文件进行打包生成的;
其中,源代码文件可以是打包生成代码合并文件需使用的代码文件。代码文件可以为包含有使用某种计算机语言编写的代码的文本文件。
可选的,源代码文件可以为一个js文件,也可以为sass文件(包含有sass代码的文本文件)。需要说明的是,本发明对于源代码文件的类型不做限定。
其中,目标源代码文件可以为需进行断点调试的某个源代码文件。
其中,源代码即可以为源代码文件中的源代码。
其中,调试器为可以对源代码文件进行断点调试的调试器。比如,当源代码文件为js文件时,调试器可以为chromedevtools。
其中,断点位置信息可以为在目标源代码文件的源代码中设置的断点的代码位置信息。
需要说明的是,在目标源代码文件的源代码中设置的断点,可以是由技术人员或者用户人为的通过调试器的前端显示面板在目标源代码文件的源代码中设置的,也可以是调试器在接收相关应用程序或者电子设备发送的断点设置指令之后在目标源代码文件的源代码中设置的。本发明对于源代码中的断点设置过程不做限定。
其中,打包程序为可以将多个源代码文件打包成一个代码合并文件的应用程序。可选的,当源代码文件为js文件时,打包程序可以为webpack。
S102、在预先生成的代码位置信息文件中,确定与断点位置信息相匹配的合并后断点位置信息,代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,合并后代码为代码合并文件中的代码;
其中,合并后断点位置信息可以为在目标源代码文件的源代码中设置的断点,在合并后代码中对应的代码位置信息。
需要说明的是,代码位置信息文件可以是由打包程序在对多个源代码文件进行打包的过程中生成的。具体的,打包程序在打包过程中,可以分析多个源代码文件之间的依赖关系,对多个源代码文件中的所有代码进行转换合并,记载同一段代码在源代码文件和合并后代码文件中的代码位置对应关系,基于记载的代码位置对应关系生成代码位置信息文件。
具体的,本发明可以在获得调试器发送的断点位置信息后,在代码位置信息文件中查找与断点位置信息相匹配的合并后断点位置信息。比如,技术人员通过调试器在目标源代码文件中的某一段代码处设置了断点,此时本发明可以获得调试器发送的断点位置信息,即该段代码的代码位置信息,之后本发明可以在代码位置信息文件中,查找与该段代码的代码位置信息相匹配的合并后断点位置信息,即该段代码在合并后代码中所处的代码位置信息。
S103、指令代码运行引擎在加载合并后代码的过程中,在合并后断点位置信息对应的代码位置处暂停加载。
其中,代码运行引擎为可以对源代码和合并后代码进行加载的运行引擎。可以理解的是,代码运行引擎可以是与源代码的计算机语言相匹配的运行引擎,比如,当源代码为js代码时,代码运行引擎可以为J2V8运行引擎。
具体的,本发明可以在确定合并后断点位置信息,且接收到断点调试启动指令之后,指令代码运行引擎开始执行合并后代码文件,即开始加载合并后代码,并在加载合并后代码的过程中,在与合并后断点位置信息相对应的合并后代码的代码位置处,暂停对合并后代码的加载。
需要说明的是,本发明在与合并后断点位置信息相对应的合并后代码的代码位置处,暂停对合并后代码的加载,即可以是在目标源代码文件中的断点位置处暂停对目标源代码文件的执行,有效实现在对目标源代码文件进行打包之后,对目标源代码文件进行断点调试。
具体的,代码运行引擎在按照合并后断点位置信息,加载合并后代码的过程中,可以是先加载完毕其它源代码文件(非目标源代码文件)的源代码,之后再开始加载目标源代码文件的源代码,并在加载目标源代码文件的源代码的过程中,在与合并后断点位置信息相对应的代码位置处暂停对目标源代码文件的源代码的加载。
可以理解的是,代码运行引擎在按照合并后断点位置信息加载合并后代码的过程中,先行加载完毕其它源代码文件,再开始加载目标源代码文件的源代码的方式,不影响对目标源代码文件进行的断点调试。
可选的,本发明可以一次性在调试器中设置多个断点,比如,在一个目标源代码文件中设置多个断点,再比如,在不同的目标源代码文件中设置断点。此时,本发明每次可以按照指定的一个断点,执行步骤S101、S102和S103,对相应的一个目标源代码文件进行断点调试。
可选的,在本实施例提出的第二种断点调试控制方法中,在步骤S103之后,第二种断点调试控制方法还可以包括以下步骤:
获得代码运行引擎发送的中断加载位置信息;
按照代码位置信息文件,生成与中断加载位置信息相匹配的源代码加载位置信息;
将源代码加载位置信息发送至调试器。
其中,中断加载位置信息可以为代码运行引擎在合并后代码文件中暂停加载时到达的代码位置的信息。
其中,源代码加载位置信息可以为中断加载位置信息在目标源代码文件中对应的代码位置的信息。
具体的,当代码运行引擎按照合并后断点位置信息,在合并后代码中的相应代码位置处暂停加载时,代码运行引擎可以记录当前的中断加载位置信息,本发明可以随之获得代码运行引擎发送的中断加载位置信息。之后,本发明可以在代码位置信息文件中,查找出中断加载位置信息在目标源代码文件中对应的代码位置信息,即源代码加载位置信息,将查找出的源代码加载位置信息返回至调试器,以在调试器的前端显示面板中,展示目标源代码中与源代码加载位置信息相对应的源代码。
可选的,在本实施例提出的第三种断点调试控制方法中,在步骤S103之后,第三种断点调试控制方法还可以包括以下步骤:
获得代码运行引擎发送的当前堆栈信息;
将当前堆栈信息发送至调试器。
具体的,当代码运行引擎按照合并后断点位置信息,在合并后代码中的相应代码位置处暂停加载时,代码运行引擎可以记录当前加载合并后代码的堆栈信息,本发明可以随之获得代码运行引擎发送的堆栈信息。
具体的,本发明可以将获得的堆栈信息返回至调试器,以在调试器的前端显示面板中显示堆栈信息,由技术人员查看堆栈信息,检查对目标源代码文件的代码执行情况,实现断点调试目的。
本实施例提出的断点调试控制方法,可以获得调试器对目标源代码文件中的源代码设置的断点位置信息,目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,代码合并文件是由打包程序对多个源代码文件进行打包生成的,在预先生成的代码位置信息文件中,确定与断点位置信息相匹配的合并后断点位置信息,代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,合并后代码为代码合并文件中的代码,指令代码运行引擎在加载合并后代码的过程中,在合并后断点位置信息对应的代码位置处暂停加载。本发明可以在调试器对目标源代码文件进行断点调试时,按照确定出的合并后断点位置信息,指令代码运行引擎在加载合并后代码的过程中,在到达与断点相对应的代码位置处暂停加载,即可以在与断点相对应的目标源代码文件中的代码位置处实现中断加载。
与图1所示步骤相对应,如图2所示,本实施例提出第四种断点调试控制方法。在该方法中,代码位置对应信息包括有代码行数对应信息和代码列数对应信息,断点位置信息包括源代码断点的代码行数信息和代码列数信息,步骤S102可以包括步骤S201和S202。其中:
S201、在代码行数对应信息中,确定与源代码断点的代码行数信息相对应的合并后代码行数信息;
其中,代码行数对应信息可以为同一段代码分别在目标源代码文件和合并后代码文件中所处的代码行数的对应信息。
其中,源代码断点的代码行数信息可以为断点在目标源代码文件的源代码中所处的代码行数。
其中,源代码断点的代码列数信息可以为断点在目标源代码文件的源代码中所处的代码列数。
其中,合并后代码行数信息可以为断点在合并后代码中所处的代码行数。
具体的,本发明可以在获得断点位置信息之后,先行在代码行数对应信息中,查找与源代码断点的代码行数相匹配的合并后代码行数信息。
S202、在代码列数对应信息中,确定与源代码断点的代码列数信息相对应的合并后代码列数信息。
其中,合并后代码列数信息可以为断点在合并后代码中所处的代码列数。
具体的,本发明可以在确定合并后代码行数信息之后,在代码列数对应信息中,查找出与源代码断点的代码列数相匹配的合并后代码列数信息。
需要说明的是,本发明可以在确定出合并后代码行数信息和合并后代码列数信息时,即可以确定出合并后断点位置信息,之后即可以按照合并后断点位置信息,指令代码运行引擎加载合并后代码,并在断点在合并后代码中对应的代码位置处暂停加载,实现对目标源代码文件的断点调试。
可选的,在本发明实施例提出的其它断点调试控制方法中,当源代码文件为js文件,打包程序为webpack,代码合并文件为js代码合并文件,调试器为chromedevtools,代码运行引擎为J2V8运行引擎时,本发明可以通过执行S101、S201、S202和S103,来实现调试器对js文件的断点调试。
其中,chromedevtools可以包括调试器前端和调试器后端。调试器前端可以是指内嵌在chrome中的调试面板,可以通过调试协议与调试器后端进行通信。可选的,调试器前端与调试器后端可以通过socket调试协议进行通信。其中,socket调试协议可以包括websocket、usb和adb等调试协议。
具体的,webpack在将多个js文件打包为js代码合并文件的过程中,可以生成代码位置信息文件。
其中,代码位置信息文件中可以包括版本信息、文件名和合并前的js文件所在的目录等信息。为更好的对代码位置信息文件进行介绍,本发明提出并结合下述例1所示的代码位置信息文件进行说明。
例1:
Figure BDA0003254575790000101
其中,"version":3该项表示代码位置信息文件的当前版本为3;"sources":["webpack:///./index.js"]可以指源代码文件,该项可以是一个数组,表示可能存在多个源代码文件合并;"names"该项可以包括源代码文件的所有变量名和属性名;
其中,"mappings"该项为记录代码位置对应信息的信息表;"file"该项可以为代码合并文件的文件名;"sourcesContent"该项可以为源代码文件的内容;"sourceRoot"该项可以表示源代码文件所在的目录,如果代码合并文件与源代码文件在同一目录,则该项可以为空。
具体的,"mappings"可以包括用于记录代码位置对应信息的长字符串。长字符串可以分成三级,第一级为使用分号进行分割的各组字符串,每组字符串可以对应合并后代码中的一行;第二级为每组字符串中使用逗号分割的各段字符串,每段字符串可以对应合并后代码中的一个代码位置;第三级中,每段字符串均可以是5个数字的Base64 VLQ编码。
具体的,本发明可以对各段字符串进行解码,获得各段字符串分别对应的5个数字。其中,在前述的5个数字中:第0个数字,表示这个代码位置在合并后代码中的第几列;第1个数字,表示这个代码位置所属的源代码文件;第2个数字,表示这个代码位置属于源代码文件中的行数;第3个数字,表示这个代码位置属于源代码文件中的列数;第4个数字,表示这个代码位置属于names属性中的哪一个变量,这个数字不是必需的,可以省略。
需要说明的是,由于Base64 VLQ编码是变长的,所以每一段字符串可以由多个字符构成。
为更好的说明"mappings"的组成结构,本发明可以对例1所示的"mappings"进行解析说明。
其中,在例1所示的"mappings"中,"mappings"开头的每个分号都对应着合并后代码中的一行,mappings开头有9个分号,代表这9行内容都是webpack自己加进去的,跟源代码文件没有关系,此处可以忽略该9行内容,从第10行开始分析。
本发明可以对第10行中的'AAAA,IAAMA,GAAG,GAAG,OAAZ'进行解码,相应的得到一个[0,0,0,0],[4,0,0,6,0],[3,0,0,3],[3,0,0,3]和[7,0,0,-12];
其中,[0,0,0,0]可以表示合并后代码中第10行第0列的代码,对应目标源代码文件中第1行第0列的代码;[4,0,0,6,0]可以表示合并后代码中的第10行、第0-3列的代码,对应目标源代码文件中第1行、第0-5列的代码,同时包含names[0],即foo变量的声明;[3,0,0,3]可以表示合并后代码中的第10行、第4-6列的代码,对应目标源代码文件中第1行、第6-8列的代码;[3,0,0,3]可以表示合并后代码中的第10行、第7-9列对应目标源代码文件中第1行、第9-11列的代码;[7,0,0,-12]可以表示合并后代码中第10行、第10-16列的代码,对应目标源代码文件中第1行、从第12列直到下一行开头的代码;
之后,例1所示"mappings"的第11行是为一个空行,直接用一个分号结束;之后是箭头函数的转换,之后第12行,对第12行中的'AACA,IAAMC,GAAG,GAAG,SAANA,GAAM,CAACC,CAAD,EAAIC,CAAJ'进行解码,得到[0,0,1,0],[4,0,0,6,1],[3,0,0,3],[3,0,0,3],[9,0,0,-6,0],[3,0,0,6],[1,0,0,1,1],[1,0,0,-1],[2,0,0,4,1]和[1,0,0,-4];
其中,[0,0,1,0]可以表示合并后代码的第12行、第0列的代码,对应目标源代码文件中第2行、第0列的代码;[4,0,0,6,1]可以表示合并后代码的第12行、第0-3列的代码,对应目标源代码文件中第1行、第0-5列的代码;[3,0,0,3]可以表示合并后代码的第12行、第4-6列的代码,对应目标源代码文件中第1行、第6-8列的代码;[3,0,0,3]可以表示合并后代码的第12行、第7-9列的代码,对应目标源代码文件中第1行、第9-11列的代码;[9,0,0,-6,0]可以表示合并后代码的第12行、第10-18列的代码,没有对应到内容,目标源代码文件中的源代码回到第5列;[3,0,0,6]可以表示合并后代码的第12行、第19-21列的代码,对应目标源代码文件中第1行、第6-11列的代码;[1,0,0,1,1]可以表示合并后代码的第12行、第22列的代码,对应目标源代码文件中第1行、第12列的代码;[1,0,0,-1]可以表示合并后代码的第12行、第23列的代码,没有对应到内容,目标源代码文件中的源代码回到第11列;[2,0,0,4,1]可以表示合并后代码的第12行、第24-25列的代码,对应目标源代码文件中第1行、第12列的代码;[1,0,0,-4]可以表示合并后代码的第12行、第26列的代码,没有对应到内容,目标源代码文件中的源代码回到第11列。
需要说明的是,本发明可以对调试器发送给J2V8运行引擎的断点位置信息进行拦截,修改调试协议,完成协议转换,即在代码位置信息文件中查找出与断点位置信息相匹配的合并后断点位置信息,再将合并后断点位置信息发送给J2V8运行引擎。比如,在调试器前端中设置断点时,可以对pageCarServiceList.jue文件进行增加断点操作,此时本发明可以接收到调试器发送的包含断点位置信息的数据:
Figure BDA0003254575790000131
该数据的含义为对目标源代码文件中的第417行,第0列的代码执行断点操作。
之后,本发明可以在代码位置信息文件中,确定与断点位置信息相匹配的合并后断点位置信息,向J2V8运行引擎发送数据:
Figure BDA0003254575790000132
该数据的含义为在代码合并文件中的第2716行、第0列的代码位置处增加断点。之后,代码运行引擎在加载合并后代码的过程中,当执行到第2716行、第0列的代码位置处时,可以触发断点操作。此时,V8Messenger类的handleDebuggerPausedEvent方法可以接收到J2V8运行引擎发送的一组数据,该组数据中可以记载有当前断点的栈信息。具体的,该组数据中可以包括有字段名称为callFrames的一个数组,该数组可以包括多个单元,每个单元均可以包括某个方法的详细信息,详细信息中可以包括方法的名称和代码起始位置信息(包括行数和列数)。其中,每个单元均可以为前一个单元的调用者(比如第1个单元可以为第0个单元的调用者)。具体的,该数组中的第0个单元可以包括当前断点方法的详细信息,其它单元均可以包括该当前断点方法的调用栈信息。
之后,本发明可以基于代码位置信息文件,将上述字段名称为callFrames的数组中各单位的方法的代码起始位置信息,转换为在相应源代码文件中的代码起始位置信息,获得转换后数组,并将转换后数组发送至调试器,在调试器的前端显示面板中显示源代码加载位置信息和堆栈信息,为技术人员提供调试信息。
本实施例提出的断点调试控制方法,可以依次按照代码行数对应信息和代码列数对应信息,确定出分别与源代码断点的代码行数信息和代码列数信息对应的合并后代码行数信息和合并后代码列数信息,实现对合并后断点位置信息的确定,从而可以使得代码运行引擎在加载合并后代码的过程中,可以在正确的断点位置处实现中断加载,有效实现对目标源代码文件的断点调试。
与图1所示步骤相对应,如图3所示,本实施例提出第一种断点调试控制装置,该装置可以包括:第一获得单元101、第一确定单元102和第一指令单元103,其中:
所述第一获得单元101,被配置为执行:获得调试器对目标源代码文件中的源代码设置的断点位置信息,所述目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,所述代码合并文件是由打包程序对所述多个源代码文件进行打包生成的;
其中,源代码文件可以是打包生成代码合并文件需使用的代码文件。代码文件可以为包含有使用某种计算机语言编写的代码的文本文件。
可选的,源代码文件可以为一个js文件,也可以为sass文件(包含有sass代码的文本文件)。需要说明的是,本发明对于源代码文件的类型不做限定。
其中,目标源代码文件可以为需进行断点调试的某个源代码文件。
其中,源代码即可以为源代码文件中的源代码。
其中,调试器为可以对源代码文件进行断点调试的调试器。比如,当源代码文件为js文件时,调试器可以为chromedevtools。
其中,断点位置信息可以为在目标源代码文件的源代码中设置的断点的代码位置信息。
需要说明的是,在目标源代码文件的源代码中设置的断点,可以是由技术人员或者用户人为的通过调试器的前端显示面板在目标源代码文件的源代码中设置的,也可以是调试器在接收相关应用程序或者电子设备发送的断点设置指令之后在目标源代码文件的源代码中设置的。本发明对于源代码中的断点设置过程不做限定。
其中,打包程序为可以将多个源代码文件打包成一个代码合并文件的应用程序。可选的,当源代码文件为js文件时,打包程序可以为webpack。
所述第一确定单元102,被配置为执行:在预先生成的代码位置信息文件中,确定与所述断点位置信息相匹配的合并后断点位置信息,所述代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,所述合并后代码为所述代码合并文件中的代码;
其中,合并后断点位置信息可以为在目标源代码文件的源代码中设置的断点,在合并后代码中对应的代码位置信息。
需要说明的是,代码位置信息文件可以是由打包程序在对多个源代码文件进行打包的过程中生成的。具体的,打包程序在打包过程中,可以分析多个源代码文件之间的依赖关系,对多个源代码文件中的所有代码进行转换合并,记载同一段代码在源代码文件和合并后代码文件中的代码位置对应关系,基于记载的代码位置对应关系生成代码位置信息文件。
具体的,本发明可以在获得调试器发送的断点位置信息后,在代码位置信息文件中查找与断点位置信息相匹配的合并后断点位置信息。比如,技术人员通过调试器在目标源代码文件中的某一段代码处设置了断点,此时本发明可以获得调试器发送的断点位置信息,即该段代码的代码位置信息,之后本发明可以在代码位置信息文件中,查找与该段代码的代码位置信息相匹配的合并后断点位置信息,即该段代码在合并后代码中所处的代码位置信息。
所述第一指令单元103,被配置为执行:指令代码运行引擎在加载所述合并后代码的过程中,在所述合并后断点位置信息对应的代码位置处中断加载。
其中,代码运行引擎为可以对源代码和合并后代码进行加载的运行引擎。可以理解的是,代码运行引擎可以是与源代码的计算机语言相匹配的运行引擎,比如,当源代码为js代码时,代码运行引擎可以为J2V8运行引擎。
具体的,本发明可以在确定合并后断点位置信息,且接收到断点调试启动指令之后,指令代码运行引擎开始执行合并后代码文件,即开始加载合并后代码,并在加载合并后代码的过程中,在与合并后断点位置信息相对应的合并后代码的代码位置处,暂停对合并后代码的加载。
需要说明的是,本发明在与合并后断点位置信息相对应的合并后代码的代码位置处,暂停对合并后代码的加载,即可以是在目标源代码文件中的断点位置处暂停对目标源代码文件的执行,有效实现在对目标源代码文件进行打包之后,对目标源代码文件进行断点调试。
具体的,代码运行引擎在按照合并后断点位置信息,加载合并后代码的过程中,可以是先加载完毕其它源代码文件(非目标源代码文件)的源代码,之后再开始加载目标源代码文件的源代码,并在加载目标源代码文件的源代码的过程中,在与合并后断点位置信息相对应的代码位置处暂停对目标源代码文件的源代码的加载。
可以理解的是,代码运行引擎在按照合并后断点位置信息加载合并后代码的过程中,先行加载完毕其它源代码文件,再开始加载目标源代码文件的源代码的方式,不影响对目标源代码文件进行的断点调试。
可选的,本发明可以一次性在调试器中设置多个断点,比如,在一个目标源代码文件中设置多个断点,再比如,在不同的目标源代码文件中设置断点。此时,本发明每次可以按照指定的一个断点执行断点控制调试,对相应的一个目标源代码文件进行断点调试。
可选的,在本实施例提出的第二种断点调试控制装置中,所述装置还包括:第二获得单元、信息生成单元和第一发送单元;其中:
所述第二获得单元,被配置为执行:在所述合并后断点位置信息对应的代码位置处中断加载之后,获得所述代码运行引擎发送的中断加载位置信息;
所述信息生成单元,被配置为执行:按照所述代码位置信息文件,生成与所述中断加载位置信息相匹配的源代码加载位置信息;
所述第一发送单元,被配置为执行:将所述源代码加载位置信息发送至所述调试器。
其中,中断加载位置信息可以为代码运行引擎在合并后代码文件中暂停加载时到达的代码位置的信息。
其中,源代码加载位置信息可以为中断加载位置信息在目标源代码文件中对应的代码位置的信息。
具体的,当代码运行引擎按照合并后断点位置信息,在合并后代码中的相应代码位置处暂停加载时,代码运行引擎可以记录当前的中断加载位置信息,本发明可以随之获得代码运行引擎发送的中断加载位置信息。之后,本发明可以在代码位置信息文件中,查找出中断加载位置信息在目标源代码文件中对应的代码位置信息,即源代码加载位置信息,将查找出的源代码加载位置信息返回至调试器,以在调试器的前端显示面板中,展示目标源代码中与源代码加载位置信息相对应的源代码。
可选的,在本实施例提出的第三种断点调试控制装置中,装置还包括:第三获得单元和第二发送单元;其中:
所述第三获得单元,被配置为执行:在所述合并后断点位置信息对应的代码位置处中断加载之后,获得所述代码运行引擎发送的当前堆栈信息;
所述第二发送单元,被配置为执行:将所述当前堆栈信息发送至所述调试器。
具体的,当代码运行引擎按照合并后断点位置信息,在合并后代码中的相应代码位置处暂停加载时,代码运行引擎可以记录当前加载合并后代码的堆栈信息,本发明可以随之获得代码运行引擎发送的堆栈信息。
具体的,本发明可以将获得的堆栈信息返回至调试器,以在调试器的前端显示面板中显示堆栈信息,由技术人员查看堆栈信息,检查对目标源代码文件的代码执行情况,实现断点调试目的。
本实施例提出的断点调试控制装置,可以在调试器对目标源代码文件进行断点调试时,按照确定出的合并后断点位置信息,指令代码运行引擎在加载合并后代码的过程中,在到达与断点相对应的代码位置处暂停加载,即可以在与断点相对应的目标源代码文件中的代码位置处实现中断加载。
基于图3,本实施例提出第四种断点调试控制装置。在该装置中,所述代码位置对应信息包括有代码行数对应信息和代码列数对应信息,所述断点位置信息包括源代码断点的代码行数信息和代码列数信息。所述第一确定单元102,包括:第二确定单元和第三确定单元;其中:
所述第二确定单元,被配置为执行:在所述代码行数对应信息中,确定与所述源代码断点的代码行数信息相对应的合并后代码行数信息;
所述第三确定单元,被配置为执行:在所述代码列数对应信息中,确定与所述源代码断点的代码列数信息相对应的合并后代码列数信息。
其中,代码行数对应信息可以为同一段代码分别在目标源代码文件和合并后代码文件中所处的代码行数的对应信息。
其中,源代码断点的代码行数信息可以为断点在目标源代码文件的源代码中所处的代码行数。
其中,源代码断点的代码列数信息可以为断点在目标源代码文件的源代码中所处的代码列数。
其中,合并后代码行数信息可以为断点在合并后代码中所处的代码行数。
具体的,本发明可以在获得断点位置信息之后,先行在代码行数对应信息中,查找与源代码断点的代码行数相匹配的合并后代码行数信息。
其中,合并后代码列数信息可以为断点在合并后代码中所处的代码列数。
具体的,本发明可以在确定合并后代码行数信息之后,在代码列数对应信息中,查找出与源代码断点的代码列数相匹配的合并后代码列数信息。
需要说明的是,本发明可以在确定出合并后代码行数信息和合并后代码列数信息时,即可以确定出合并后断点位置信息,之后即可以按照合并后断点位置信息,指令代码运行引擎加载合并后代码,并在断点在合并后代码中对应的代码位置处暂停加载,实现对目标源代码文件的断点调试。
可选的,在本发明实施例提出的其它断点调试控制装置中,当源代码文件为js文件,打包程序为webpack,代码合并文件为js代码合并文件,调试器为chromedevtools,代码运行引擎为J2V8运行引擎时,本发明可以通过执行S101、S201、S202和S103,来实现调试器对js文件的断点调试。
其中,chromedevtools可以包括调试器前端和调试器后端。调试器前端可以是指内嵌在chrome中的调试面板,可以通过调试协议与调试器后端进行通信。可选的,调试器前端与调试器后端可以通过socket调试协议进行通信。其中,socket调试协议可以包括websocket、usb和adb等调试协议。
具体的,webpack在将多个js文件打包为js代码合并文件的过程中,可以生成代码位置信息文件。
其中,代码位置信息文件中可以包括版本信息、文件名和合并前的js文件所在的目录等信息。
需要说明的是,本发明可以对调试器发送给J2V8运行引擎的断点位置信息进行拦截,修改调试协议,完成协议转换,即在代码位置信息文件中查找出与断点位置信息相匹配的合并后断点位置信息,再将合并后断点位置信息发送给J2V8运行引擎。
本实施例提出的断点调试控制装置,可以依次按照代码行数对应信息和代码列数对应信息,确定出分别与源代码断点的代码行数信息和代码列数信息对应的合并后代码行数信息和合并后代码列数信息,实现对合并后断点位置信息的确定,从而可以使得代码运行引擎在加载合并后代码的过程中,可以在正确的断点位置处实现中断加载,有效实现对目标源代码文件的断点调试。
上述断点调试控制装置包括处理器和存储器,上述第一获得单元101、第一确定单元102和第一指令单元103等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现断点调试控制。
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现上述断点调试控制方法。
本发明实施例提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述断点调试控制方法。
如图4所示,本发明实施例提供了一种电子设备100,电子设备100包括至少一个处理器200、以及与处理器200连接的至少一个存储器300、总线400;其中,处理器200、存储器300通过总线400完成相互间的通信;处理器200用于调用存储器300中的程序指令,以执行上述断点调试控制方法。本文中的电子设备可以是服务器、PC、PAD、手机等。
本发明还提供了一种计算机程序产品,当在电子设备上执行时,适于执行初始化有如下方法步骤的程序:
获得调试器对目标源代码文件中的源代码设置的断点位置信息,目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,代码合并文件是由打包程序对多个源代码文件进行打包生成的;
在预先生成的代码位置信息文件中,确定与断点位置信息相匹配的合并后断点位置信息,代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,合并后代码为代码合并文件中的代码;
指令代码运行引擎在加载合并后代码的过程中,在合并后断点位置信息对应的代码位置处中断加载。
本发明是参照根据本发明实施例的方法、装置、电子设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,电子设备包括一个或多个处理器(CPU)、存储器和总线。电子设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

Claims (10)

1.一种断点调试控制方法,其特征在于,包括:
获得调试器对目标源代码文件中的源代码设置的断点位置信息,所述目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,所述代码合并文件是由打包程序对所述多个源代码文件进行打包生成的;
在预先生成的代码位置信息文件中,确定与所述断点位置信息相匹配的合并后断点位置信息,所述代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,所述合并后代码为所述代码合并文件中的代码;
指令代码运行引擎在加载所述合并后代码的过程中,在所述合并后断点位置信息对应的代码位置处中断加载。
2.根据权利要求1所述的方法,其特征在于,在所述合并后断点位置信息对应的代码位置处中断加载之后,所述方法还包括:
获得所述代码运行引擎发送的中断加载位置信息;
按照所述代码位置信息文件,生成与所述中断加载位置信息相匹配的源代码加载位置信息;
将所述源代码加载位置信息发送至所述调试器。
3.根据权利要求1所述的方法,其特征在于,所述代码位置对应信息包括有代码行数对应信息和代码列数对应信息,所述断点位置信息包括源代码断点的代码行数信息和代码列数信息。
4.根据权利要求3所述的方法,其特征在于,所述在预先生成的代码位置信息文件中,确定与所述断点位置信息相匹配的合并后断点位置信息,包括:
在所述代码行数对应信息中,确定与所述源代码断点的代码行数信息相对应的合并后代码行数信息;
在所述代码列数对应信息中,确定与所述源代码断点的代码列数信息相对应的合并后代码列数信息。
5.根据权利要求1所述的方法,其特征在于,在所述合并后断点位置信息对应的代码位置处中断加载之后,所述方法还包括:
获得所述代码运行引擎发送的当前堆栈信息;
将所述当前堆栈信息发送至所述调试器。
6.一种断点调试控制装置,其特征在于,包括:第一获得单元、第一确定单元和第一指令单元,其中:
所述第一获得单元,被配置为执行:获得调试器对目标源代码文件中的源代码设置的断点位置信息,所述目标源代码文件为生成代码合并文件需使用的多个源代码文件中的一个源代码文件,所述代码合并文件是由打包程序对所述多个源代码文件进行打包生成的;
所述第一确定单元,被配置为执行:在预先生成的代码位置信息文件中,确定与所述断点位置信息相匹配的合并后断点位置信息,所述代码位置信息文件中保存有源代码与合并后代码的代码位置对应信息,所述合并后代码为所述代码合并文件中的代码;
所述第一指令单元,被配置为执行:指令代码运行引擎在加载所述合并后代码的过程中,在所述合并后断点位置信息对应的代码位置处中断加载。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:第二获得单元、信息生成单元和第一发送单元;其中:
所述第二获得单元,被配置为执行:在所述合并后断点位置信息对应的代码位置处中断加载之后,获得所述代码运行引擎发送的中断加载位置信息;
所述信息生成单元,被配置为执行:按照所述代码位置信息文件,生成与所述中断加载位置信息相匹配的源代码加载位置信息;
所述第一发送单元,被配置为执行:将所述源代码加载位置信息发送至所述调试器。
8.根据权利要求6所述的方法,其特征在于,所述代码位置对应信息包括有代码行数对应信息和代码列数对应信息,所述断点位置信息包括源代码断点的代码行数信息和代码列数信息。
9.一种电子设备,其特征在于,所述电子设备包括至少一个处理器、以及与所述处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如权利要求1至5中任一项所述的断点调试控制方法。
10.一种计算机可读存储介质,其上存储有程序,其特征在于,所述程序被处理器执行时实现如权利要求1至5中任一项所述的断点调试控制方法。
CN202111055835.3A 2021-09-09 2021-09-09 一种断点调试控制方法及相关设备 Pending CN113688056A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111055835.3A CN113688056A (zh) 2021-09-09 2021-09-09 一种断点调试控制方法及相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111055835.3A CN113688056A (zh) 2021-09-09 2021-09-09 一种断点调试控制方法及相关设备

Publications (1)

Publication Number Publication Date
CN113688056A true CN113688056A (zh) 2021-11-23

Family

ID=78585823

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111055835.3A Pending CN113688056A (zh) 2021-09-09 2021-09-09 一种断点调试控制方法及相关设备

Country Status (1)

Country Link
CN (1) CN113688056A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543858A (zh) * 2022-12-02 2022-12-30 北京大学 调试代码文件的方法及装置、非易失性存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699481A (zh) * 2013-12-03 2014-04-02 华为技术有限公司 一种代码调试方法及调试系统
CN104375940A (zh) * 2014-11-28 2015-02-25 浪潮电子信息产业股份有限公司 一种对javaScript文件的调试方法
US20150199261A1 (en) * 2014-01-15 2015-07-16 Microsoft Corporation Classification of JavaScript Code for Debugging using Just My Code
CN109783342A (zh) * 2017-11-10 2019-05-21 华为技术有限公司 脚本调试方法、设备及计算机存储介质
CN110377523A (zh) * 2019-07-24 2019-10-25 网易(杭州)网络有限公司 程序调试方法及装置、电子设备和存储介质
CN112433929A (zh) * 2019-08-26 2021-03-02 深圳市珍爱捷云信息技术有限公司 网页调试方法、装置、计算机设备和存储介质
CN112597019A (zh) * 2020-12-24 2021-04-02 上海艾融软件股份有限公司 一种前端代码调试方法、装置、系统与介质
CN112988599A (zh) * 2021-04-29 2021-06-18 腾讯科技(深圳)有限公司 一种页面调试方法、装置、电子设备和存储介质
CN113127329A (zh) * 2019-12-31 2021-07-16 北京华为数字技术有限公司 脚本调试方法、装置及计算机存储介质
CN113342654A (zh) * 2021-06-08 2021-09-03 广州博冠信息科技有限公司 脚本语言代码调试方法及装置、可读存储介质及电子设备

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699481A (zh) * 2013-12-03 2014-04-02 华为技术有限公司 一种代码调试方法及调试系统
US20150199261A1 (en) * 2014-01-15 2015-07-16 Microsoft Corporation Classification of JavaScript Code for Debugging using Just My Code
CN104375940A (zh) * 2014-11-28 2015-02-25 浪潮电子信息产业股份有限公司 一种对javaScript文件的调试方法
CN109783342A (zh) * 2017-11-10 2019-05-21 华为技术有限公司 脚本调试方法、设备及计算机存储介质
CN110377523A (zh) * 2019-07-24 2019-10-25 网易(杭州)网络有限公司 程序调试方法及装置、电子设备和存储介质
CN112433929A (zh) * 2019-08-26 2021-03-02 深圳市珍爱捷云信息技术有限公司 网页调试方法、装置、计算机设备和存储介质
CN113127329A (zh) * 2019-12-31 2021-07-16 北京华为数字技术有限公司 脚本调试方法、装置及计算机存储介质
CN112597019A (zh) * 2020-12-24 2021-04-02 上海艾融软件股份有限公司 一种前端代码调试方法、装置、系统与介质
CN112988599A (zh) * 2021-04-29 2021-06-18 腾讯科技(深圳)有限公司 一种页面调试方法、装置、电子设备和存储介质
CN113342654A (zh) * 2021-06-08 2021-09-03 广州博冠信息科技有限公司 脚本语言代码调试方法及装置、可读存储介质及电子设备

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
{前端开发}: "[转] Webpack的devtool和source maps", pages 1 - 5, Retrieved from the Internet <URL:《https://www.cnblogs.com/chris-oil/p/8856020.html》> *
QINHEJ: "webpack打包+调试", pages 1 - 9, Retrieved from the Internet <URL:《https://blog.csdn.net/u014229652/article/details/83033348》> *
张廷杭: "《基于Vue的微信小程序开发实践教程》", 30 June 2020, 北京中国铁道出版社, pages: 219 *
沉末_: "【webpack】你所不知道的sourceMap", pages 1 - 11, Retrieved from the Internet <URL:《https://juejin.cn/post/6844903971648372743》> *
阮一峰: "JavaScript Source Map 详解", pages 1 - 8, Retrieved from the Internet <URL:《https://www.ruanyifeng.com/blog/2013/01/javascript_source_map.html》> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115543858A (zh) * 2022-12-02 2022-12-30 北京大学 调试代码文件的方法及装置、非易失性存储介质

Similar Documents

Publication Publication Date Title
US8261244B2 (en) Arbitrary runtime function call tracing
US8549502B2 (en) Compiler with user-defined type inference rules
US8458681B1 (en) Method and system for optimizing the object code of a program
US8020156B2 (en) Bulk loading system and method
CN110704064B (zh) 编译和执行智能合约的方法及装置
US20110154299A1 (en) Apparatus and method for executing instrumentation code
US10853224B2 (en) Indexing and searching a time-travel trace for arbitrary length/arbitrary alignment values
US20220214882A1 (en) Stack traces using shadow stack
CN108052327A (zh) 一种内核模块编译、加载方法及装置
CN113360157A (zh) 一种程序编译方法、设备以及计算机可读介质
US9117017B2 (en) Debugger with previous version feature
CN113688056A (zh) 一种断点调试控制方法及相关设备
Polukhin Boost C++ application development cookbook
CN114443042A (zh) 基于规则引擎的服务编排执行方法及相关设备
CN114691496A (zh) 单元测试方法、装置、计算设备及介质
CN117251234B (zh) 基于补丁的函数调用方法及装置
CN117270962B (zh) 一种处理着色语言的方法、装置、存储介质及电子设备
CN116955209B (zh) WebAssembly虚拟机的测试方法和装置
CN117149209A (zh) 一种代码增量编译方法、装置、计算机设备及存储介质
CA2367061A1 (en) Generating optimized computer data field conversion routines
CN116303528A (zh) 数据探查方法、装置及设备
CN115269404A (zh) 一种基于解释执行的代码的调试方法、装置以及设备
Culwin ADA, a developmental approach
CN117130982A (zh) 生成项目结构目录文档的方法、装置、电子设备及介质
CN115629764A (zh) 一种Java程序静态编译方法及装置

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