监控计算机、软件调试方法、软件调试系统、介质及产品与流程
未命名
07-12
阅读:59
评论:0

1.本技术涉及计算机技术领域,特别涉及一种监控计算机、软件调试方法、软件调试系统、介质及产品。
背景技术:
2.soa(service-oriented architecture,面向服务架构)软件属于嵌入式软件。嵌入式系统是应用广泛的一类实时控制系统,通常运行在具有严格资源限制的嵌入式处理器或微控制器上。大多数嵌入式系统不具备代码编写和编译条件,需要在云主机上开发嵌入式软件,在目标机上运行嵌入式软件。由于开发环境和运行环境不一致,soa软件开发过程中会遇到各种问题,例如硬件故障、软件漏洞、性能问题等,因此,需要对soa软件进行调试。
3.在对soa软件进行调试时,开发人员采用ssh(secure shell protocol,安全外壳协议)的方式登录目标机,在用户主机上手动输入调试指令,用户主机将用户输入的调试指令发送至目标机,以控制目标机运行测试软件,从而验证soa软件是否存在问题。
4.然而,上述调试方法需要开发人员手动输入大量的调试指令,调试效率较低。
技术实现要素:
5.本技术实施例提供了一种监控计算机、软件调试方法、软件调试系统、介质及产品,能够提高调试效率。所述技术方案如下:第一方面,提供了一种监控计算机,所述监控计算机应用于嵌入式软件开发场景,所述监控计算机包括状态采集模块、编解码模块、指令代理模块及计算处理模块,所述状态采集模块和所述指令代理模块均与所述编解码模块连接,所述编解码模块与所述计算处理模块连接;所述状态采集模块用于获取当前时刻目标机的第一状态信息和云主机的第二状态信息,并将所述第一状态信息和所述第二状态信息发送所述编解码模块;所述编解码模块用于对所述第一状态信息和所述第二状态信息进行编码,得到状态特征向量,并将所述状态特征向量发送至所述计算处理模块;所述计算处理模块用于调用指令预测模型,对所述状态特征向量进行处理,得到预测调试指令,将所述预测调试指令发送至所述指令代理模块;所述指令代理模块用于将所述预测调试指令发送至用户主机,并在接收到所述用户主机针对所述预测调试指令返回的正向反馈指令,将所述预测调试指令发送至所述目标机,所述预测调试指令用于控制所述目标机运行待调试软件。
6.在另一种可能的实现方式中,所述状态采集模块还用于基于第一信息类型,对当前时刻所述目标机运行过程中产生的信息进行筛选,得到所述第一状态信息,并基于第二信息类型,对当前时刻所述云主机运行过程中产生的信息进行筛选,得到所述第二状态信息。
7.在另一种可能的实现方式中,所述编解码模块具体用于对所述第一状态信息中每
种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第一特征向量;对所述第二状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第二特征向量;将所述第一特征向量和所述第二特征向量进行拼接,得到所述状态特征向量。
8.在另一种可能的实现方式中,所述状态采集模块还用于获取历史时刻所述目标机的样本第一状态信息和所述云主机的样本第二状态信息,并将所述样本第一状态信息和所述样本第二状态信息发送至所述编解码模块;所述指令代理模块还用于获取所述历史时刻用户在所述用户主机上输入的样本调试指令,并将所述样本调试指令发送至所述编解码模块;所述编解码模块还用于对所述样本第一状态信息和所述样本第二状态信息进行编码,得到样本状态特征向量,并对所述样本调试指令进行编码,得到样本指令向量,将所述样本状态特征向量及所述样本指令向量发送至所述计算处理模块;所述计算处理模块还用于基于所述样本状态特征向量及样本指令向量,训练所述指令预测模型。
9.在另一种可能的实现方式中,所述监控计算机还包括:信息存储模块,所述信息存储模块与所述编解码模块及所述计算处理模块连接;所述信息存储模块用于获取所述编解码模块编码的所述状态特征向量及每种调试指令对应的指令特征向量,存储所述状态特征向量及每种调试指令与指令特征向量之间的对应关系;所述计算处理模块具体用于调用所述指令预测模型,对所述状态特征向量进行处理,得到预测指令特征向量,基于所述预测指令特征向量,从所述信息存储模块中获取所述预测指令特征向量对应的所述预测调试指令。
10.在另一种可能的实现方式中,所述指令代理模块还用于获取调试指令,并将所述调试指令发送至所述编解码模块,所述调试指令为所述用户主机检测到用户针对所述预测调试指令的负向选择操作后由用户输入;所述编解码模块还用于对所述调试指令进行编码,得到指令特征向量,并将所述指令特征向量发送至所述计算处理模块;所述信息存储模块用于将所述状态特征向量发送至所述计算处理模块;所述计算处理模块用于基于所述指令特征向量和所述状态特征向量,对所述指令预测模型的模型参数进行调整,得到调整后的指令预测模型,将所述指令预测模型更新为所述调整后的指令预测模型,所述调整后的指令预测模型用于预测下一时刻的调试指令。
11.第二方面,提供了一种软件调试方法,所述方法应用于第一方面所述的监控计算机,所述方法包括:对目标机的第一状态信息和云主机的第二状态信息进行编码,得到状态特征向量;调用指令预测模型,对所述状态特征向量进行处理,得到预测调试指令;将所述预测调试指令发送至用户主机,所述预测调试指令用于触发所述用户主机在检测到用户针对所述预测调试指令的正向选择操作时,返回正向反馈指令;
响应于接收到的所述正向反馈指令,将所述预测调试指令发送至所述目标机,所述预测调试指令用于控制所述目标机运行待调试软件。
12.在另一种可能的实现方式中,所述对目标机的第一状态信息和云主机的第二状态信息进行编码,得到状态特征向量,包括:对所述第一状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第一特征向量;对所述第二状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第二特征向量;将所述第一特征向量和所述第二特征向量进行拼接,得到所述状态特征向量。
13.在另一种可能的实现方式中,所述调用指令预测模型,对所述状态特征向量进行处理,得到预测调试指令之前,还包括:获取历史时刻所述目标机的样本第一状态信息、所述云主机的样本第二状态信息及用户在所述用户主机上输入的样本调试指令;对所述样本第一状态信息和所述样本第二状态信息进行编码,得到样本状态特征向量,并对所述样本调试指令进行编码,得到样本指令向量;基于所述样本状态特征向量及样本指令向量,训练所述指令预测模型。
14.在另一种可能的实现方式中,所述方法还包括:获取调试指令,所述调试指令为所述用户主机在检测到用户针对所述预测调试指令的负向选择操作后由用户输入;将所述调试指令发送至所述目标机,所述调试指令用于控制所述目标机运行待调试软件。
15.在另一种可能的实现方式中,所述获取调试指令之后,还包括:对所述调试指令进行编码,得到指令特征向量;基于所述指令特征向量和所述状态特征向量,对所述指令预测模型的模型参数进行调整,得到调整后的指令预测模型;将所述指令预测模型更新为所述调整后的指令预测模型;基于所述调整后的指令预测模型,预测下一时刻的调试指令。
16.第三方面,提供了一种软件调试系统,所述系统包括监控计算机、目标机、云主机及用户主机,所述目标机、所述云主机及所述用户主机分别与所述监控计算机连接;所述监控计算机如第一方面所述的监控计算机;所述目标机用于采集所述目标机的第一状态信息,将所述第一状态信息发送至所述监控计算机,并接收所述监控计算机发送的所述预测调试指令;所述云主机用于采集所述云主机的第二状态信息,将所述第二状态信息发送至监控计算机;所述用户主机用于接收所述监控计算机发送的预测调试指令,并在检测到用户针对所述预测调试指令的正向选择操作时,向所述监控计算机返回正向反馈指令。
17.第四方面,提供了一种电子设备,所述电子设备包括存储器及处理器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现如第一方面所述的软件调试方法。
18.第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序被处理器执行时能够实现如第一方面所述的软件调试方法。
19.第六方面,提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时能够实现如第一方面所述的软件调试方法。
20.本技术实施例提供的技术方案带来的有益效果是:在嵌入式软件开发场景下,获取当前时刻运行嵌入式软件的目标机的第一状态信息,及用于对嵌入式软件进行编译的云主机的第二状态信息,并将第一状态信息和第二状态信息编码成指令预测模型能够识别的状态特征向量,进而通过调用该指令预测模型,对状态特征向量进行处理,自动给出预测调试指令,并在接收到开发人员通过用户主机发送的正向反馈指令,即开发人员认为该预测调试指令正确,直接将该预测调试指令发送至目标机。由于无需开发人员手动输入繁琐的调试指令,因而提高了调试效率。进一步地,避免了开发人员输入调试指令过程发生错误,导致错误地报错,提升了嵌入式软件的调试准确性。
附图说明
21.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
22.图1是本技术实施例提供的一种监控计算机的结构示意图;图2是本技术实施例提供的另一种监控计算机的结构示意图;图3是本技术实施例提供的一种软件调试系统的结构示意图;图4是本技术实施例提供的另一种软件调试系统的结构示意图;图5是本技术实施例提供的一种软件调试方法的流程图;图6是本技术实施例提供的一种软件调试方法的流程图;图7示出了本技术一个示例性实施例提供的一种电子设备的结构框图。
具体实施方式
23.为使本技术的目的、技术方案和优点更加清楚,下面将结合附图对本技术实施方式作进一步地详细描述。
24.可以理解,本技术实施例所使用的术语“每个”、“多个”及“任一”等,多个包括两个或两个以上,每个是指对应的多个中的每一个,任一是指对应的多个中的任意一个。举例来说,多个词语包括10个词语,而每个词语是指这10个词语中的每一个词语,任一词语是指10个词语中的任意一个词语。
25.本技术所涉及的信息(包括但不限于用户设备信息、用户个人信息等)、数据(包括但不限于用于分析的数据、存储的数据、展示的数据等)以及信号,均为经用户授权或者经过各方充分授权的,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。例如,本技术中涉及到的用户正向选择操作、用户负向选择操作及用户输入的
调试指令都是在充分授权的情况下获取的。
26.在通用计算机软件开发中,开发环境与运行环境基本相同。与之不同的是,大多数嵌入式系统本身不具备代码编写和编译条件,无法在嵌入式系统上进行软件开发,需要进行交叉编译,导致开发环境和运行环境的不一致。其中,交叉编译是指在一个平台上生成可以在另一个平台运行的代码。开发环境是指编译、链接、定址过程的云主机;运行环境是指运行嵌入式软件的目标机。
27.调试是嵌入式开发过程中的一个重要步骤,嵌入式系统由于资源限制等因素,难以直接运行调试器,一般采用交叉调试方式,即在云主机上编译出目标机的库文件或可执行文件,在目标机运行库文件或可执行文件。
28.总结来说,该调试过程包括以下步骤:第一步,在云主机的交叉编译环境中编译出相应的库文件和可执行文件,例如,在云主机上执行“make xxx”命令后,得到libsoaa.so、libsoab.so、libsoac.so、libsoad.so、test_server、test_client 等库文件或可执行文件。
29.第二步,将全部或部分的库文件或可执行文件发送至对应的目标机,并存储到该目标机的指定位置上。例如,当libsoab.so文件需要调试,开发人员通过输入调试指令:“cd /data/src/soa/out/target/sa515/”、
ꢀ“
scp libsoab.so *****@192.168.1.31/mnt/sdcard/lib/”,将libsoab.so文件发送至对应目标机(例如,目标机m1的/mnt/sdcard/目录),替换原来的libsoab.so文件。
30.第三步,采用ssh方式远程登录目标机,并通过ssh方式将调试指令发送至相应的目标机,由各个目标机运行待调试软件。例如,ssh窗口1连接目标机m1,ssh窗口2连接目标机m2,则在ssh窗口1中输入调试指令:“cd /mnt/sdcard/”、“export ld_library_path=./lib”、“./bin/test_server”,在ssh窗口2中输入调试指令:“cd /mnt/sdcard/”、
ꢀ“
export ld_library_path=./lib”、“./bin/test_client”,进而将在ssh窗口1中输入的调试指令发送给目标机m1,将在ssh窗口2中输入的调试指令发送给目标机m2。
31.基于上述调试方法有一个典型的应用场景,假设开发人员a想要在liba.so对应的源代码中添加了一个新功能,则需要执行编译和调试操作。具体步骤如下:在ssh窗口中输入登录用户名name@10.80.50.8,登录云主机(编译主机);输入cd /data/xxxa/src/bootes/指令,进入某个源码仓库;输入指令source build/envsetup.sh,设置编译时环境变量;选择交叉编译器平台,可以选择服务端lunch 2或客户端lunch3;输入编译指令make bootescore;6、如果选择服务端作为交叉编译器平台,则输入ssh ****@192.168.1.2打开目标机,如果选择客户端作为交叉编译器平台,则输入ssh ****@192.168.1.3打开目标机;7、如果选择服务端作为交叉编译器,则输入:scp/data/xxxa/src/bootes/out/target/bgm/usr/lib/liba.so ****@192.168.1.2跳转回云主机;如果选择客户端作为交叉编译器平台,则输入:scp/data/xxxa/src/bootes/out/target/bgm/usr/lib/liba.so ****@192.168.1.3跳转回云主机;
8、在云主机上输入以下指令启动服务端:cd /update/xxx/usr/、export ld_library_path=/update/xxx/usr/lib、export bootes_home_dir=/update/xxx/usr/etc./bin/test_server;在云主机上输入以下指令启动客户端:cd/mnt/sdcard/xxx/usr/、export ld_library_path=/mnt/sdcard/xxx/usr/lib、export bootes_home_dir=/mnt/sdcard/xxx/usr/etc./bin/test_client。
32.通过上述例子可以看出,嵌入式软件开发过程中,需要开发人员输入大量的调试指令。而相关技术并不会对调试指令进行智能提示,或者提示能力弱(例如linxu终端可以按上下键来查询历史指令),需要开发人员手动输入大量的调试指令,对开发人员要求较高,且需要一定的输入时间,调试效率较低,且开发人员输入时存在输入错误的风险,导致调试结果的准确性较低。
33.然而,通过对这些调试指令进行分析可以看出,这些调试指令虽然繁杂、参数多样等,但是相似度较高、可分类。基于调试指令的特点,本技术实施例提供了一种监控计算机,该监控计算机基于历史调试场景下目标机和云主机的状态信息以及输入的调试指令,训练指令预测模型,在软件调试过程中,通过调用该指令预测模型,自动输出符合当前调试场景的预测调试指令。基于该监控计算机,开发人员无需记忆及输入繁琐的调试指令,根据输出的预测调试指令的提示进行操作即可,降低了调试难度及调试操作的复杂度,提高了调试效率及调试结果的准确性。
34.本技术实施例提供了一种监控计算机,该监控计算机应用于嵌入式软件开发场景,参见图1,该监控计算机包括:状态采集模块101、编解码模块102、指令代理模块103及计算处理模块104,该状态采集模块101和指令代理模块103均与编解码模块102连接,编解码模块102与计算处理模块104连接。
35.其中,状态采集模块101用于按照一定的频率,获取当前时刻目标机的第一状态信息和云主机的第二状态信息,并将第一状态信息和第二状态信息发送至编解码模块102。目标机的第一状态信息为目标机在运行过程中产生的信息,包括进程信息、当前系统时间、cpu(central processing unit,中央处理器)使用率、最近第一预设条数的历史调试指令等,该进程信息包括进程名和进程的pid(process identifier,进程标识符)等,该第一预设条数根据需求设置,可以为10条、20条等。云主机的第二状态信息为云主机在运行过程中产生的信息,包括特定目录下生成的文件信息、当前交互编译环境信息、云主机的登录用户名、最近第二预设条数的历史调试指令等。该特定目录可根据调试需求进行选取。该第二预设条数根据需求进行设置,可以为10条、20条等。对于监控计算机来说,状态采集模块101的获取动作,可以是通过监控目标机和云主机的运行采集状态信息,也可以是接收目标机和云主机发送的状态信息。
36.编解码模块102用于对第一状态信息和第二状态信息进行编码,得到状态特征向量,并将状态特征向量发送至计算处理模块104。通常来说,第一状态信息和第二状态信息无法被计算处理模块直接识别出,需要对其进行编码,转变为计算处理模块104可以识别出的状态特征向量。
37.计算处理模块104作为监控计算机的核心,用于调用指令预测模型,对状态特征向
量进行处理,得到预测调试指令,并将该预测调试指令发送至指令代理模块103。该指令预测模型用于基于当前调试场景下的状态特征向量,预测出符合当前调试场景的调试指令。该指令预测模型的网络结构可以为inception-v1网络等,本技术实施例对此不作具体的限定。
38.指令代理模块103作为用户主机、目标机、云主机交互的中转站,用于实现用户主机、目标机、云主机之间指令的转发。具体来说,用于将预测调试指令发送至用户主机,并在接收到用户主机针对预测调试指令返回的正向反馈指令时,将预测调试指令发送至目标机,该预测调试指令用于控制目标机运行待调试软件。
39.在本技术实施例中,由于目标机及云主机运行过程中产生的信息较多,这些信息中部分与调试指令预测有关,例如,云主机上的
ꢀ“
make core”指令,该条指令包含了至少2种信息:“进行编译make”以及“make的模块是core模块”。这些信息中部分与调试指令预测无关,例如,云主机在编译阶段输出的大部分打印内容。如果将目标机及云主机运行过程中产生的信息均收集到,不仅会占用监控计算机的内存,而且会增加编解码模块编码的计算量。因此,有必要对目标机及云主机运行过程中产生的信息进行筛选,以减低目标机和云主机的状态信息占用的内存,同时减少编解码模块的计算量。
40.为实现信息筛选目的,本技术实施例提供的状态采集模块还具有信息筛选功能,基于该功能可对目标机及云主机运行过程中产生的信息进行筛选,从而得到目标机的第一状态信息和云主机的第二状态信息。由于目标机和云主机的功能不同,在运行过程中产生的信息不同,且这些信息中与调试指令预测相关的信息的类型也是不同的,因此,针对目标机和云主机,状态采集模块需要分别进行筛选。具体地,假设目标机运行过程中产生的信息中与调试指令预测有关的信息类型为第一信息类型,云主机运行过程中产生的信息中与调试指令预测有关的信息类型为第二信息类型,则状态采集模块101将基于第一信息类型,对当前时刻目标机运行过程中产生的信息进行筛选,得到第一状态信息,并基于第二信息类型,对当前时刻云主机运行过程中产生的信息进行筛选,得到第二状态信息。其中,第一信息类型包括进程信息、当前系统时间、cpu使用率、最近第一预设条数的历史调试指令等。第二信息类型包括特定目录下生成的文件信息、当前交互编译环境信息、云主机登录用户名、最近第二预设条数的历史调试指令等。
41.为使编解码模块102能够更好地编码,本技术实施例设置了编码策略,该编码策略包括编码格式和编码方式,编码格式指示了对目标机的第一状态信息及云主机的第二状态信息进行编码得到的编码结果的表示方式及位数,该表示方式可以为16进制数等,该位数指示了编码结果的位数。考虑到进行软件调试的目标机的数量是固定的,例如6个,当参与编码的目标机的数量为该固定数量,则得到的编码结果的位数符合位数要求;当参与编码的目标机的数量小于该固定数量,则得到的编码结果的位数必然小于要求的位数,在该种情况下,可进行补零操作。编码方式指示了对目标机的第一状态信息和云主机的第二状态信息进行编码时的方式,包括整体哈希和在最小的信息单元上进行哈希计算等。整体哈希是指对第一转状态信息及第二状态信息中全部的信息进行哈希计算。在最小的信息单元上进行哈希计算是指对第一状态信息及第二状态信息中每种类型的信息分别进行哈希计算。考虑到如果将第一状态信息及第二状态信息中全部的信息进行哈希计算,可能会丢失第一状态信息和第二状态信息中包含的更多细节,例如,进程个数和进程启动时间等信息,这些
细节与调试指令的预测有一定的相关性,为了尽可能减少编码过程中的信息丢失,本技术实施例中编解码模块在进行编码时,采用在最小的信息单元上进行哈希计算的方式,即对每种类型的信息分别进行哈希计算,然后将每种类型的信息对应的哈希值拼接在一起,从而形成一个大的哈希值链。该哈希值链的长度是固定的,如果每种类型的信息缺失,则将该种类型的信息对应位置的哈希值设置为0。通过进行补零操作,保证了状态特征向量的长度的一致性。
42.具体地,编解码模块102对第一状态信息和第二状态信息的编解码过程包括:编解码模块对第一状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第一特征向量;对第二状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第二特征向量;将第一特征向量和第二特征向量进行拼接,得到状态特征向量。
43.对于第一状态信息来说,上述编码过程可采用如下公式:encode = md5(进程1的进程名) + md5 (进程1的pid)+.. + md5 (进程n的进程名)+ md5(进程n的pid)+ md5(ip地址)+ md5(当前系统时间)+hash(最近的第一条历史调试指令)+
…ꢀ
+hash(最近的第m条的历史调试指令),其中,m和n为大于1的整数,且m与第一预设条数的数值相同。
44.对于进程信息来说,本技术实施例中在对进程信息进行哈希计算时,可将进程名的哈希计算结果采用16字节的16进制数表示,将进程的pid直接转换成2字节的16进制数。通常来说,16字节的16进制数为32位,2字节的16进制数为4位,这样,每个进程信息将采用36位的16进制数表示。
45.例如,目标机的第一状态信息包括20个进程,分别为进程1、进程2、进程3、
…
、进程20,则采用上述表示方式,该目标机的进程信息为一个720位(36*20=720)的16进制数。每个进程的计算结果可参见下述表1。
46.表1以历史调试指令的条数为20条为例,当第一状态信息中每种类型的信息均进行了哈希计算,并将每种类型的信息的哈希值拼接在一起后,得到的第一特征向量的形式可参见表2。
47.表2
以历史调试指令的条数为20条为例,当第二状态信息中每种类型的信息均进行了哈希计算,并将每种类型的信息的哈希值拼接在一起后,得到的第二特征向量的形式可参见表3。
48.表3当然,编解码模块102不仅可对目标机的第一状态信息和云主机的第二状态信息进行编码,而且还可对用户主机上用户输入的调试指令进行编码。考虑到在调试场景下,调试指令的数量及内容是有限的,本技术实施例可根据每条调试指令的存储顺序,为每条调试指令设置编号,例如,第一条调试指令的编号为1,第二条调试指令的编号为2,依次类推。然后,采用预设编码方式,对每条调试指令的编号进行编码,得到指令特征向量,该预设编码方式可以为one-hot等。表4示出了对调试指令的编码结果。
49.表4参见图2,在本技术的另一个实施例中,该监控计算机还包括信息存储模块105,该信息存储模块105与编解码模块102及计算处理模块104连接。该信息存储模块105用于获取编解码模块102编码的状态特征向量及每种调试指令对应的指令特征向量,并存储计算处理模块编码得到的状态特征向量,还存储每种调试指令与指令特征向量之间的对应关系。
50.在本技术实施例中,指令预测模型是实现调试指令自动预测的关键,监控计算机在实现调试指令自动预测功能之前,需要训练出该指令预测模型。具体地,该指令预测模型的训练过程包括:
状态采集模块101获取历史时刻目标机的样本第一状态信息和云主机的样本第二状态信息,并将样本第一状态信息和样本第二状态信息发送至编解码模块102,同时指令代理模块103获取该历史时刻用户在用户主机上输入的样本调试指令,并将样本调试指令发送至编解码模块102,编解码模块102对样本第一状态信息和样本第二状态信息进行编码,得到样本状态特征向量,并对样本调试指令进行编码,得到样本指令向量,然后以样本状态特征向量为状态、以样本指令向量作为标签,组成状态标签对,进而将该状态标签对发送至计算处理模块104。计算处理模块104接收样本状态特征向量和样本指令向量,基于该样本状态特征向量及样本指令向量,训练该指令预测模型。
51.基于所训练的指令预测模型,在对当前时刻的调试指令进行预测时,可调用指令预测模型,对状态特征向量进行处理,得到预测指令特征向量。由于该预测指令特征向量并不是目标机所能识别的指令,需要基于该预测指令特征向量,从信息存储模块中存储的指令特征向量与调试指令之间的对应关系中,获取该预测指令特征向量对应的预测调试指令。
52.在申请实施例中,当将预测调试指令发送至用户主机后,用户主机显示该预测调试指令,开发人员基于当前的调试场景判断该预测调试指令是否准确,如果该预测调试指令准确,则可针对该预测调试指令执行正向选择操作,例如,触控回车键等,生成正向反馈指令,并将该正向反馈指令发送至指令代理模块,由指令代理模块将该预测调试指令发送至目标机,以控制目标机运行该待调试软件,从而检查待调试软件是否存在问题。如果该预测调试指令错误,开发人员可针对该预测调试指令执行负向选择操作,例如触控ecs键等,然后输入正确的调试指令,用户主机获取到该调试指令,进而将该调试指令发送至指令代理模块,由指令代理模块将该调试指令发送至编解码模块,编解码模块接收到该调试指令后,对该调试指令进行编码,得到指令特征向量,进而将指令特征向量发送至计算处理模块,同时信息存储模块将所存储的当前时刻的状态特征向量也发送至计算处理模块,计算处理模块基于指令特征向量和状态特征向量,对指令预测模型的模型参数进行调整,得到调整后的指令预测模型,进而将所加载的指令预测模型更新为该调整后的指令预测模型。在后续指令调试过程中,计算处理模块基于该调整后的指令预测模型,预测下一时刻的调试指令。
53.本技术实施例提供的监控计算机,能够获取当前时刻运行嵌入式软件的目标机的第一状态信息,及用于对嵌入式软件进行编译的云主机的第二状态信息,并将第一状态信息和第二状态信息编码成指令预测模型能够识别的状态特征向量,进而通过调用该指令预测模型,对状态特征向量进行处理,得到预测调试指令。基于该监控计算机,在嵌入式软件开发场景下,能够自动给出预测调试指令,并在接收到开发人员通过用户主机发送的正向反馈指令,即开发人员认为该预测调试指令正确,直接将该预测调试指令发送至目标机。由于无需开发人员手动输入繁琐的调试指令,因而提高了调试效率。进一步地,避免了开发人员输入调试指令过程发生错误,导致错误地报错,提升了嵌入式软件的调试准确性。
54.本技术实施例提供了一种软件调试系统,参见图3,本技术实施例提供的软件调试系统包括监控计算机301、目标机302、云主机303及用户主机304,该目标机302、云主机303及用户主机304分别与监控计算机301连接。
55.其中,监控计算机为图1或图2所示的监控计算机;
目标机302用于采集目标机的第一状态信息,将第一状态信息发送至监控计算机301,并接收监控计算机发送的预测调试指令;云主机303用于采集云主机的第二状态信息,将第二状态信息发送至监控计算机301;用户主机304用于接收监控计算机301发送的预测调试指令,并在检测到用户针对预测调试指令的正向选择操作时,向监控计算机返回正向反馈指令。
56.在本技术的另一个实施例中,当监控计算机将预测调试指令发送至用户主机之后,如果用户确定该预设调试指令错误,用户执行针对该预设调试指令的负向选择操作,用户主机检测到用户的负向选择操作后,监测用户的输入操作,以获取用户输入的调试指令,并将该调试指令发送至监控计算机,由监控计算机将该调试指令发送至相应的目标机,以使目标机运行待调试软件。
57.图4示出了图3所示的软件调试系统的具体结构的示意图,参见图4,该软件调试系统包括目标机、云主机、监控计算机及用户主机群。该目标机的数量为至少一个目标机,分别为目标机m1、目标机m2、
…
、目标机mn等,其中目标机m1、目标机m2、
…
、目标机mn均包括指令代理模块和状态采集模块等。云主机包括指令代理模块和状态采集模块等。监控计算机包括状态采集模块、编解码模块、计算处理模块、指令代理模块及信息存储模块等。用户主群包括至少一个用户主机,分别为用户主机1、用户主机2、
…
、用户主机n等,其中用户主机1、用户主机2、
…
、用户主机n均包括指令代理模块。目标机、云主机及用户主机包括的模块与监控计算机中相应的模块的功能类似,下面将结合软件的编译及调试过程,对目标机、云主机、监控计算机及用户主机中各个模块的功能进行详述。
58.在编译过程中,用户可在任一用户主机上输入编译指令,该用户主机获取用户所输入的编译指令,并将该编译指令发送至监控计算机的指令代理模块。监控计算机的指令代理模块接收该编译指令,并将该编译指令发送至云主机的指令代理模块。当接收到编译指令,云主机执行编译操作,并将编译得到的可执行文件发送至监控计算机的指令代理模块。监控计算机的指令代理模块接收云主机发送的可执行文件,并将可执行文件发送至相应的目标机。
59.在调试过程中,目标机m1、目标机m2、
…
、目标机mn的状态采集模块采集各自运行过程中产生的第一状态信息,并分别将采集到的第一状态信息发送至监控计算机的状态信息采集模块。云主机的状态采集模块采集运行过程中产生的第二状态信息,并将第二状态信息发送至监控计算机的状态信息采集模块。监控计算机的状态信息采集模块接收第一状态信息和第二状态信息,并将接收到的第一状态信息和第二状态信息发送至编解码模块。编解码模块对第一状态信息和第二状态信息进行编码,得到状态特征向量,并将该状态特征向量发送至计算处理模块。计算处理模块调用指令预测模型,对该状态特征向量进行处理,得到预测调试指令,并通过指令代理模块将该预测调试指令发送至该用户主机上的指令代理模块,由该用户主机进行显示。如果检测到用户的正向选择操作,用户主机生成正向反馈指令,并通过指令代理模块将该正向反馈指令发送至监控计算机的指令代理模块,由监控计算机的指令代理模块将预测调试指令发送至相应的目标机,以使该目标机运行待调试软件。如果检测到用户的负向选择操作,用户主机通过检测用户的输入操作,获取用户输入的调试指令,并通过指令代理模块将调试指令发送至监控计算机的指令代理模块,由监
控计算机的指令代理模块将该调试指令发送至相应的目标机,以使该目标机运行待调试软件。
60.本技术实施例提供了一种软件调试方法,以监控计算机执行本技术实施例为例,参见图5,本技术实施例提供的方法流程包括:501、对目标机的第一状态信息和云主机的第二状态信息进行编码,得到状态特征向量。
61.具体地,监控计算机对目标机的第一状态信息和云主机的第二状态信息进行编码,得到状态特征向量,包括:对第一状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第一特征向量;对第二状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第二特征向量;将第一特征向量和第二特征向量进行拼接,得到状态特征向量。
62.502、调用指令预测模型,对状态特征向量进行处理,得到预测调试指令。
63.指令预测模型的训练过程包括:监控计算机获取历史时刻目标机的样本第一状态信息、云主机的样本第二状态信息及用户在用户主机上输入的样本调试指令,对样本第一状态信息和样本第二状态信息进行编码,得到样本状态特征向量,并对样本调试指令进行编码,得到样本指令向量,进而基于样本状态特征向量及样本指令向量,训练指令预测模型。
64.503、将预测调试指令发送至用户主机。
65.基于所生成的预测调试指令,监控计算机将该预测调试指令发送至用户主机,当接收到该预测调试指令,用户主机显示该预测调试指令,由用户进行检测该预测调试指令是否正确,如果用户确定该预测调试指令正确,则执行对该预测调试指令的正向选择操作,当检测到用户的正向选择操作,用户主机生成正向反馈指令,并将该正向反馈指令发送至监控计算机;如果用户确定该预测调试指令不正确,则执行对该预测调试指令的负向选择操作,当检测到用户的负向选择操作,用户主机监测用户的输入操作,获取用户输入的调试指令,并将该调试指令发送至监控计算机。
66.504、响应于接收到的正向反馈指令,将预测调试指令发送至目标机。
67.如果监控计算机接收到的是用户主机发送的正向反馈指令,则响应于该正向反馈指令,监控计算机将该预测调试指令发送至目标机,以控制目标机运行待调试软件。
68.在本技术的另一个实施例中,如果监控计算机获取的是用户主机发送的调试指令,则将该调试指令发送至目标机,以控制目标机运行待调试软件。
69.进一步地,当获取调试指令之后,监控计算机还将对调试指令进行编码,得到指令特征向量,进而基于指令特征向量和状态特征向量,对指令预测模型的模型参数进行调整,得到调整后的指令预测模型,然后将所加载的指令预测模型更新为该调整后的指令预测模型,进而基于调整后的指令预测模型,预测下一时刻的调试指令。
70.本技术实施例中监控计算机上同时运行两种工作模式,一种为学习模式,当处于学习模式时,监控计算机将目标机的样本第一状态信息和云主机的样本第二状态信息进行编码得到的样本状态特征向量,以及对用户输入的样本调试指令进行编码得到的样本状态特征向量,输入到人工神经网络进行学习,训练出一个可预测调试指令的人工神经网络,即
指令预测模型;另一种为预测模式,当处于预测模式时,监控计算机以状态信息编码得到的状态特征向量为输入,调用指令预测模型对该状态特征向量进行处理,得到预测调试指令,进而将该预测调试指令提供给开发人员,从而无需开发人员输入调试指令,即可完成软件的调试过程。
71.图6为本技术实施例提供的软件调试方法的流程图,参见图6,当进入采样周期时,监控计算机采集目标机的第一状态信息、云主机的第二状态信息,并对采集到的第一状态信息和第二状态信息进行编码,得到状态特征向量,如果该状态特征向量首次出现,则需要存储该状态特征向量,然后由计算处理模块调用指令预测模型,对该状态特征向量进行处理,得到预测调试指令。接着,监控计算机判断当前时刻用户主机是否等待命令输入,如果当前主机等待命令输入,则输出该预测调试指令,由用户主机进行显示。用户主机对用户的操作进行检测,如果检测到用户输入ecs键,则说明所预测的调试指令错误,并获取用户输入的调试指令,进而将该调试指令发送至目标机;如果检测到用户输入回车键,则说明所预测的调试指令正确,进而将该预测调试指令发送至目标机。进一步地,当将用户输入的调试指令发送至目标机之后,监控计算机还将以该调试指令作为标签,存储的状态特征向量作为状态,对指令预测模型的模型参数进行调整,得到调整后的指令预测模型,然后将所加载的指令预测模型更新为该调整后的指令预测模型。
72.本技术实施例提供的方法,在嵌入式软件开发场景下,获取当前时刻运行嵌入式软件的目标机的第一状态信息,及用于对嵌入式软件进行编译的云主机的第二状态信息,并将第一状态信息和第二状态信息编码成指令预测模型能够识别的状态特征向量,进而通过调用该指令预测模型,对状态特征向量进行处理,自动给出预测调试指令,并在接收到开发人员通过用户主机发送的正向反馈指令,即开发人员认为该预测调试指令正确,直接将该预测调试指令发送至目标机。由于无需开发人员手动输入繁琐的调试指令,因而提高了调试效率。进一步地,避免了开发人员输入调试指令过程发生错误,导致错误地报错,提升了嵌入式软件的调试准确性。
73.图7示出了本技术一个示例性实施例提供的一种电子设备700的结构框图,该电子设备可以为监控计算机。通常,电子设备700包括有:处理器701和存储器702。
74.处理器701可以采用dsp(digital signal processing,数字信号处理)、fpga(field-programmable gate array,现场可编程门阵列)、pla(programmable logic array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器701也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称cpu(central processing unit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器701可以在集成有gpu(graphics processing unit,图像处理器),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器701还可以包括ai(artificial intelligence,人工智能)处理器,该ai处理器用于处理有关机器学习的计算操作。
75.存储器702可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是cd-rom(compact disc read-only memory,只读光盘)、rom 、ram(random access memory,随机存取存储器)、磁带、软盘和光数据存储设备等。该计算机可读存储介质中存储
有至少一条计算机程序,该至少一条计算机程序被执行时能够实现软件调试方法。
76.当然,上述电子设备必然还可以包括其他部件,例如输入/输出接口、通信组件等。输入/输出接口为处理器和外围接口模块之间提供接口,上述外围接口模块可以是输出设备、输入设备等。通信组件被配置为便于电子设备和其他设备之间有线或无线方式的通信等。
77.本领域技术人员可以理解,图7中示出的结构并不构成对电子设备700的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
78.当然,除了监控计算机,图3所示的软件测试系统中的目标机、云主机及用户主机中任一设备均可以具有电子设备700的结构,所不同的是,当电子设备700作为目标机、云主机及用户主机中任一设备,所执行的操作是不同的。
79.本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序被处理器执行时能够实现上述软件调试方法。
80.本技术中的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序或指令。在计算机上加载和执行所述计算机程序或指令时,全部或部分地执行本技术所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、网络设备、用户设备、核心网设备、oam(operation administration and maintenance,操作管理维护)或者其它可编程装置。所述计算机程序或指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序或指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是集成一个或多个可用介质的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,例如,软盘、硬盘、磁带;也可以是光介质,例如,数字视频光盘;还可以是半导体介质,例如,固态硬盘。该计算机可读存储介质可以是易失性或非易失性存储介质,或可包括易失性和非易失性两种类型的存储介质。
81.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
82.以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
技术特征:
1.一种监控计算机,其特征在于,所述监控计算机应用于嵌入式软件开发场景,所述监控计算机包括状态采集模块、编解码模块、指令代理模块及计算处理模块,所述状态采集模块和所述指令代理模块均与所述编解码模块连接,所述编解码模块与所述计算处理模块连接;所述状态采集模块用于获取当前时刻目标机的第一状态信息和云主机的第二状态信息,并将所述第一状态信息和所述第二状态信息发送所述编解码模块;所述编解码模块用于对所述第一状态信息和所述第二状态信息进行编码,得到状态特征向量,并将所述状态特征向量发送至所述计算处理模块;所述计算处理模块用于调用指令预测模型,对所述状态特征向量进行处理,得到预测调试指令,并将所述预测调试指令发送至所述指令代理模块;所述指令代理模块用于将所述预测调试指令发送至用户主机,并在接收到所述用户主机针对所述预测调试指令返回的正向反馈指令,将所述预测调试指令发送至所述目标机,所述预测调试指令用于控制所述目标机运行待调试软件。2.根据权利要求1所述的监控计算机,其特征在于,所述状态采集模块还用于基于第一信息类型,对当前时刻所述目标机运行过程中产生的信息进行筛选,得到所述第一状态信息,并基于第二信息类型,对当前时刻所述云主机运行过程中产生的信息进行筛选,得到所述第二状态信息。3.根据权利要求1所述的监控计算机,其特征在于,所述编解码模块具体用于对所述第一状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第一特征向量;对所述第二状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第二特征向量;将所述第一特征向量和所述第二特征向量进行拼接,得到所述状态特征向量。4.根据权利要求1所述的监控计算机,其特征在于,所述状态采集模块还用于获取历史时刻所述目标机的样本第一状态信息和所述云主机的样本第二状态信息,并将所述样本第一状态信息和所述样本第二状态信息发送至所述编解码模块;所述指令代理模块还用于获取所述历史时刻用户在所述用户主机上输入的样本调试指令,并将所述样本调试指令发送至所述编解码模块;所述编解码模块还用于对所述样本第一状态信息和所述样本第二状态信息进行编码,得到样本状态特征向量,并对所述样本调试指令进行编码,得到样本指令向量,将所述样本状态特征向量及所述样本指令向量发送至所述计算处理模块;所述计算处理模块还用于基于所述样本状态特征向量及样本指令向量,训练所述指令预测模型。5.根据权利要求1所述的监控计算机,其特征在于,所述监控计算机还包括:信息存储模块,所述信息存储模块与所述编解码模块及所述计算处理模块连接;所述信息存储模块用于获取所述编解码模块编码的所述状态特征向量及每种调试指令对应的指令特征向量,存储所述状态特征向量及每种调试指令与指令特征向量之间的对应关系;所述计算处理模块具体用于调用所述指令预测模型,对所述状态特征向量进行处理,
得到预测指令特征向量,基于所述预测指令特征向量,从所述信息存储模块中获取所述预测指令特征向量对应的所述预测调试指令。6.根据权利要求5所述的监控计算机,其特征在于,所述指令代理模块还用于获取调试指令,并将所述调试指令发送至所述编解码模块,所述调试指令为所述用户主机检测到用户针对所述预测调试指令的负向选择操作后由用户输入;所述编解码模块还用于对所述调试指令进行编码,得到指令特征向量,并将所述指令特征向量发送至所述计算处理模块;所述信息存储模块用于将所述状态特征向量发送至所述计算处理模块;所述计算处理模块用于基于所述指令特征向量和所述状态特征向量,对所述指令预测模型的模型参数进行调整,得到调整后的指令预测模型,将所述指令预测模型更新为所述调整后的指令预测模型,所述调整后的指令预测模型用于预测下一时刻的调试指令。7.一种软件调试方法,其特征在于,所述方法应用于权利要求1至6中任一项所述的监控计算机,所述方法包括:对目标机的第一状态信息和云主机的第二状态信息进行编码,得到状态特征向量;调用指令预测模型,对所述状态特征向量进行处理,得到预测调试指令;将所述预测调试指令发送至用户主机,所述预测调试指令用于触发所述用户主机在检测到用户针对所述预测调试指令的正向选择操作时,返回正向反馈指令;响应于接收到的所述正向反馈指令,将所述预测调试指令发送至所述目标机,所述预测调试指令用于控制所述目标机运行待调试软件。8.根据权利要求7所述的方法,其特征在于,所述对目标机的第一状态信息和云主机的第二状态信息进行编码,得到状态特征向量,包括:对所述第一状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第一特征向量;对所述第二状态信息中每种类型的信息进行哈希计算,得到每种类型的信息对应的哈希值,并将每种类型的信息对应的哈希值进行拼接,得到第二特征向量;将所述第一特征向量和所述第二特征向量进行拼接,得到所述状态特征向量。9.根据权利要求7所述的方法,其特征在于,所述调用指令预测模型,对所述状态特征向量进行处理,得到预测调试指令之前,还包括:获取历史时刻所述目标机的样本第一状态信息、所述云主机的样本第二状态信息及用户在所述用户主机上输入的样本调试指令;对所述样本第一状态信息和所述样本第二状态信息进行编码,得到样本状态特征向量,并对所述样本调试指令进行编码,得到样本指令向量;基于所述样本状态特征向量及样本指令向量,训练所述指令预测模型。10.根据权利要求7所述的方法,其特征在于,所述方法还包括:获取调试指令,所述调试指令为所述用户主机在检测到用户针对所述预测调试指令的负向选择操作后由用户输入;将所述调试指令发送至所述目标机,所述调试指令用于控制所述目标机运行待调试软件。11.根据权利要求10所述的方法,其特征在于,所述获取调试指令之后,还包括:
对所述调试指令进行编码,得到指令特征向量;基于所述指令特征向量和所述状态特征向量,对所述指令预测模型的模型参数进行调整,得到调整后的指令预测模型;将所述指令预测模型更新为所述调整后的指令预测模型;基于所述调整后的指令预测模型,预测下一时刻的调试指令。12.一种软件调试系统,其特征在于,所述系统包括监控计算机、目标机、云主机及用户主机,所述目标机、所述云主机及所述用户主机分别与所述监控计算机连接;所述监控计算机如权利要求1至6中任一项所述的监控计算机;所述目标机用于采集所述目标机的第一状态信息,将所述第一状态信息发送至所述监控计算机,并接收所述监控计算机发送的所述预测调试指令;所述云主机用于采集所述云主机的第二状态信息,将所述第二状态信息发送至监控计算机;所述用户主机用于接收所述监控计算机发送的预测调试指令,并在检测到用户针对所述预测调试指令的正向选择操作时,向所述监控计算机返回正向反馈指令。13.一种电子设备,其特征在于,所述电子设备包括存储器及处理器,所述存储器中存储有至少一条计算机程序,所述至少一条计算机程序由所述处理器加载并执行,以实现如权利要求7至11中任一项所述的软件调试方法。14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条计算机程序,所述至少一条计算机程序被处理器执行时能够实现如权利要求7至11中任一项所述的软件调试方法。15.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时能够实现如权利要求7至11中任一项所述的软件调试方法。
技术总结
本申请提供了一种监控计算机、软件调试方法、软件调试系统、介质及产品,属于计算机技术领域。所述方法包括:对目标机的第一状态信息和云主机的第二状态信息进行编码,得到状态特征向量;调用指令预测模型,对状态特征向量进行处理,得到预测调试指令;将预测调试指令发送至用户主机,预测调试指令用于触发用户主机在检测到用户针对预测调试指令的正向选择操作时,返回正向反馈指令;响应于接收到的正向反馈指令,将预测调试指令发送至目标机,预测调试指令用于控制目标机运行待调试软件。本申请在进行软件调试时,无需开发人员手动输入繁琐的调试指令,基于目标机的第一状态信息和云主机的第二状态信息,能够自动给出调试指令,提高了调试效率。提高了调试效率。提高了调试效率。
技术研发人员:李睿华
受保护的技术使用者:北京集度科技有限公司
技术研发日:2023.06.02
技术公布日:2023/7/7
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/