一种异构软件应用开发系统及方法与流程

未命名 08-17 阅读:120 评论:0

1.本发明属于计算机应用开发技术领域,具体涉及一种异构软件应用开发系统及方法。


背景技术:

2.现有异构软件应用开发主要有两种途径,一种是通过交叉编译链工具进行目标平台的代码编译,这需要准备大量的目标平台依赖库,并且需要将编译好的程序放入目标平台进行运行调试;另一种是在目标平台进行编译及调试,这需要准备目标平台的硬件环境。由此可见,上述两种方式均需要目标平台的相关支持,降低了调试过程的便捷性,尤其是对于缺少图形化界面的嵌入式平台来说调试的不便性将体现地更为突出。
3.目前通过采用仿真调试工具,如vmware,以期解决对目标平台的依赖问题,然而仿真调试工具仅能模拟操作系统无法模拟异构硬件环境,因此仍无法完全解决目标平台的依赖性问题。


技术实现要素:

4.有鉴于此,本发明提供了一种异构软件应用开发系统及方法,实现了异构软件应用的开发。
5.本发明提供的一种异构软件应用开发系统,包括项目创建模块、开发编译模块、异构仿真调试模块和封装发布模块;其中,项目创建模块用于创建项目或导入已有项目;开发编译模块,用于为创建的项目提供多语言辅助开发、gcc编译器选择、动态库导入及自动化构建功能;异构仿真调试模块,用于为创建的项目提供仿真模拟运行、仿真模拟调试、性能分析及dump文件解析功能;封装发布模块,用于为创建的项目提供程序的容器化封装、目标平台发布与部署功能;采用项目创建模块创建项目或导入已有项目,根据项目的文件类型调用开发编译模块完成应用程序的交叉编译,并生成目标平台下的可执行程序;再采用异构仿真调试模块加载通过编译的可执行程序,模拟目标平台的环境并进行可执行程序的仿真调试;最后采用封装发布模块将可执行程序及其所依赖的动态库封装到目标平台容器中,并打包生成镜像文件,当需要部署时根据目标平台的用户名和ip地址将镜像文件发布到目标平台上并启动运行。
6.进一步地,所述模拟目标平台的环境并进行可执行程序的仿真调试的方式为:通过vscode的可视化调试工具结合交叉编译链工具的gdb调试器调用目标平台容器中的动态库,模拟目标平台的环境并进行可执行程序的仿真调试。
7.本发明提供的一种异构软件应用开发方法,包括以下步骤:步骤1、构建仿真模拟环境,包括多种架构平台的调试及运行容器、编译工具、交叉编译链工具、qemu解释器工具及docker工具;步骤2、采用项目创建模块创建项目,在项目目录中添加.lzide文件夹并在该文件
夹下增加lzide.json文件,lzide.json文件用于设置并保存项目属性为开发编译模块和封装发布模块提供配置信息;步骤3、完成项目代码的开发,使用开发编译模块读取lzide.json文件确定gcc编译器,根据gcc编译器从对应容器中获取动态库位置并将其写入cmakelist文件或pro文件中;确定编译工具,按照编译工具的命令格式构建项目代码的makefile文件,将makefile文件生成相应架构的可执行二进制文件,并记录可执行二进制文件的位置;步骤4、异构仿真调试模块根据lzide.json文件配置vscode的调试启动launch.json文件;步骤5、封装发布模块将步骤1构建的仿真模拟环境作为基础镜像用于部署可执行程序,通过配置基础镜像、内部执行命令、外部执行命令、封装后版本、封装项目路径及工作区路径生成基础镜像的配置文件,基于配置文件生成dockerfile;基于dockerfile生成封装后的容器,将可执行代码复制到容器中,再将容器发送至目标平台,通过配置文件启动容器完成可执行代码的部署。
8.进一步地,所述步骤2中所述项目属性包括项目名称、编程语言、部署平台、调试编译入口文件、项目构建模式及项目目标文件。
9.进一步地,所述步骤4的实现方式为:采用gcc_path字段中gcc编译器目录下的gdb路径替换launch.json文件中的gdb程序路径,同时,采用步骤3中记录的可执行二进制文件的位置替换launch.json文件中的可执行程序路径,并在midebuggerserveraddress字段中写入默认的调试地址和端口。
10.进一步地,所述步骤5中所述配置文件以json文件形式保存。
11.进一步地,还包括:通过vscode的gdb的远程调试功能,在容器中以异步执行的方式将容器中所调试的项目代码配置为使用前置任务,采用docker命令以midebuggerserveraddress字段中的端口和program中的可执行程序路径为参数启动qemu解释器的gdb server,并以后台形式运行容器。
12.进一步地,还包括:在容器的根目录下启动http-server服务,当在容器中调式项目代码时,若宿主机的交叉编译链工具gdb无法找到容器中的符号表,则根据符号名称使用http-server服务下载符号名称对应的动态库。
13.进一步地,所述步骤5还包括:当封装发布模块未查询到作为基础镜像的仿真模拟环境,则通过配置文件中的目标平台架构、操作系统版本、运行环境获取镜像构建参数,下载匹配的镜像,基于下载的镜像生成的临时容器,在临时容器中预装qemu解释器和运行环境;再将项目代码所依赖的动态库文件位置添加到配置文件中,完成配置文件的更新,基于配置文件生成dockerfile;当dockerfile运行时,将项目代码所依赖的动态库拷贝到临时容器中,并设置容器为自动启动,得到execute镜像;将execute镜像打包完成容器的发布及部署。
14.进一步地,所述将execute镜像打包完成容器的发布及部署的方式为:采用插件封装的nodejs的ssh2函数功能,将打包的镜像通过ssh的方式发送到目标平台,并以容器命令调用的方式解压、加载并运行镜像。
15.有益效果
16.本发明通过构建基于容器的仿真模拟环境,并在仿真模拟环境中完成程序的调试
和测试,相较于在目标平台上执行在节省大量的时间和成本的同时提高了程序测试的精度,并且有助于设计和开发人员在实际系统实施之前发现和解决程序潜在的安全问题和风险,此外基于智能框架提供的可视化人机交互调试手段能够有效提高开发人员的调试效率。
具体实施方式
17.下面列举实施例,对本发明进行详细描述。
18.本发明提供的一种异构软件应用开发系统,包括:项目创建模块、开发编译模块、异构仿真调试模块和封装发布模块。
19.其中,项目创建模块用于创建项目或导入已有项目。
20.开发编译模块,用于为创建的项目提供多语言辅助开发、gcc编译器选择、动态库或头文件导入、自动化构建等功能;多语言的辅助开发功能支持对代码的辅助开发,包括代码错误提示、函数推荐等功能;动态库或头文件导入功能,用于将开发中所需的动态库和头文件导入到项目中,同时在插件缓存中保存动态库和头文件的路径,以保证代码编译的顺利进行。
21.异构仿真调试模块,用于为创建的项目提供仿真模拟运行、仿真模拟调试、性能分析、dump文件的解析等功能。
22.封装发布模块,用于为创建的项目提供程序的容器化封装、目标平台发布与部署功能。
23.首先采用项目创建模块在异构软件应用开发系统中创建项目或导入已有项目;然后根据项目相关文件的类型自动调用开发编译模块中的代码提示、动态库与头文件导入等功能,便于用户开发c/c++或python应用,之后根据所选目标平台架构,自动调用交叉编译链工具将开发好的应用进行自动交叉编译,生成目标平台下的可执行程序;再采用异构仿真调试模块加载编译好的可执行程序,通过vscode的可视化调试工具结合交叉编译链工具的gdb调试器调用容器中的动态库,模拟目标平台的环境并进行可执行程序的仿真调试;采用封装发布模块对已调试可执行程序进行封装发布和管理,将可执行程序所依赖的动态库和可执行程序通过配置后封装到目标平台容器中,并打包生成镜像文件,当部署时仅需提供目标平台的用户名和ip地址即可将打包后的镜像文件发布到目标平台上并自动启动运行。
24.本发明提供的一种异构软件应用开发方法,采用本发明提供的一种异构软件应用开发系统实现了异构软件应用的开发,具体包括以下步骤:步骤1、构建仿真模拟环境,包括多种架构平台的调试及运行容器、编译工具、交叉编译链工具、qemu解释器工具及docker工具。
25.其中,编译工具包括cmake、qmake及catkinmake等构建工具。
26.为了能在x86环境上仿真多种架构平台的调试及运行环境,本发明预先准备了多种架构平台的容器和基础镜像用于仿真多种目标平台。
27.以arm64架构为例,从docker hub下载基础镜像,由于下载的基础镜像为arm64版的其无法在x86环境上运行,因此本发明采用qemu解释器工具,通过在x86环境中的binfmt_misc中注册qemu解释器以实现实时监听不同elf格式的程序,当发现采用arm64指令集的程
序等待触发时,qemu解释器将arm64指令集翻译为x86可用的指令集,由此完成arm64基础镜像在x86环境中的启动构成arm64容器。同时,在容器中需要完成以下工具和路径的映射,映射x86环境下的qemu解释器工具以便在容器中安装开发中所包含的所有arm64架构的依赖环境,映射x86环境下的x11可视化调试工具以提供容器中运行或调试可视化程序时的图形化显示功能,映射x86环境下的项目工作区目录以减少交叉编译后产生的可执行程序传入时或dump文件导出容器时所耗费的时间,从而为x86环境下vscode中的快速仿真调试提供性能帮助。
28.当完成上述操作后,仿真模拟环境构建完成,统一存放在本地下的docker镜像库中。
29.步骤2、采用项目创建模块创建cmake或者qmake项目,或导入已有项目,同时在项目目录中添加.lzide文件夹并在该文件夹下增加lzide.json文件,lzide.json文件用于设置并保存项目属性包括项目名称、编程语言、部署平台、调试编译入口文件、项目构建模式及项目目标文件等,lzide.json文件用于为开发编译模块和封装发布模块执行自动化构建与封装发布提供配置信息。
30.具体来说,可通过分析cmakelist、pro判断项目是否为cmake或qmake项目。
31.lzide.json文件的具体数据格式如下:{"name":"readimg", #项目名称"type":"c++", #语言类型"miscinfo":{"uid":"string"},"deployconfig":{"ip":"string","username":"string","password":"string","outdir":"string","architecture":"string","os_version":"string"}, #待部署的平台信息"gcc_path":"string", #调试与编译的入口文件"run_mode": "debug" #构建模式,支持debug和release"target":[] #待封装发布的目标文件}。
[0032]
步骤3、完成项目代码的开发,使用开发编译模块读取lzide.json文件根据gcc_path字段确定gcc编译器,再根据确定的gcc编译器从对应容器中获取动态库位置并将其写入cmakelist文件或pro文件中;根据run_mode字段确定编译工具,按照编译工具的cmd命令格式自动构建代码的makefile文件,采用make命令将makefile文件生成相应架构的可执行二进制文件,并记录可执行二进制文件的位置。
[0033]
步骤4、异构仿真调试模块根据lzide.json文件配置vscode的调试启动launch.json文件,具体为:采用gcc_path字段中gcc编译器目录下的gdb路径替换launch.json文件中的gdb程序路径,同时,采用步骤3中记录的可执行二进制文件的位置替换launch.json文件中的可执行程序路径,并在midebuggerserveraddress字段中写入默认的调试地址和端口。
[0034]
通常情况下,容器中的gdb调试需要ptrace权限,由于容器为非x86架构因此需要采用qemu解释器翻译非x86架构的指令集,然而qemu解释器不支持ptrace的翻译导致非x86架构容器的gdb不支持调试。本发明通过vscode的gdb的远程调试功能,采用gcc_path字段
中gcc编译器目录下的gdb路径替换launch.json文件中的gdb程序路径,即midebuggerpath,同时采用步骤3中记录的可执行二进制文件的位置替换launch.json文件中的可执行程序路径,即program,在midebuggerserveraddress字段中写入默认的调试地址和端口,否则无法连接容器中的gdb server调试对应架构的可执行程序。
[0035]
launch.json文件的具体内容如下:{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"name": "arm-debug",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"type": "cppdbg",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"request": "launch",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"program": "${workspaceroot}/build/wodewodewode",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"midebuggerserveraddress": "127.0.0.1:1235",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"args": [],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"stopatentry": false,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"cwd": "${workspaceroot}",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"environment": [],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"externalconsole": false,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"mimode": "gdb","additionalsolibsearchpath": "",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"internalconsoleoptions": "openonfirstsessionstart",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"setupcommands": [],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"midebuggerpath":"",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"targetarchitecture": "arm64",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"prelaunchtask": "arm-debug"
ꢀꢀꢀꢀꢀꢀꢀꢀ
}当vscode触发调试指令时,vscode读取launch.json文件,若prelaunchtask中存在前置任务,则由vscode将task.json中command字段的内容作为将触发的前置任务。
[0036]
当在容器中启动qemu解释器的gdb server时,由于gdb server需等待客户端的请求,因此会产生阻塞问题,同时vscode中gdb功能的同步执行机制将导致超时异常而无法使用。因此,本发明采用异步执行的方式,将容器中所调试的项目代码配置为使用前置任务,在容器中采用docker命令以midebuggerserveraddress字段中的端口和program中的可执行程序路径为参数启动qemu解释器的gdb server,并以后台形式运行容器,由此可实现容器中qemu gdb server的调用。
[0037]
由于在容器中进行程序调试时宿主机的交叉编译链工具gdb无法找到容器中的符号表,这会导致容器无法加载程序所需的符号,因此需要把容器内部所需的动态库映射到宿主机的相同目录下。然而容器本身所具有的保护机制使宿主机无法创建并访问容器中的文件夹,因此,本发明在容器的根目录下启动http-server服务,http-server服务端口为容器启动时配置的端口,然后在宿主机上输入http://ip:端口即可访问容器中的文件,再在插件中使用vscode.debug.activedebugsession.customrequest("evaluate", { expression: "file", context: "repl" })方法获取当前待调试程序所需的符号链接,并
根据符号名称采用http-server服务下载无法加载的动态库,将下载的动态库存放在宿主机的指定文件夹中,采用插件在launch.json文件的additionalsolibsearchpath字段里写入该指定文件夹的路径,即可成功加载所有符号链接,并在vscode中通过操作按钮使用单步调试、变量监听等功能。
[0038]
task.json文件格式具体如下:{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"label": "arm-debug",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"type": "shell",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"command": "",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"args": [],
ꢀꢀꢀꢀꢀꢀꢀꢀ
}当使用仿真运行功能时,调用运行指令,将lzide.json文件中的run_mode字段改为release模式,插件监听lzide.json文件的改变,并根据步骤3中的信息重新编译代码再采用容器执行可执行程序;如果程序崩溃则将生成的dump文件路径自动配置到launch.json文件中的coredumppath中,并将容器中的gdb路径、docker执行路径、docker启动与执行参数写入pipetransport字段下的debuggerpath、pipeprogram、pipeargs中,同时导入模拟仿真运行时配置的program字段,增加新的dump文件调试属性以实现在vscode中解析dump文件并调试源码中错误的位置。dump文件调试属性json结构如下:{
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"name": "",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"type": "cppdbg",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"request": "launch",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"program": "", #可执行程序路径
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"coredumppath": " ", #dump文件路径
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"args": [],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"stopatentry": false,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"cwd": "/",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"environment": [],
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"externalconsole": false,
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"pipetransport": {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"debuggerpath": "", #gdb路径
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"pipeprogram": "", #容器可执行程序启动位置
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"pipeargs": [], #容器执行参数
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"pipecwd": "/"
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
},
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"mimode": "gdb",
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
"targetarchitecture": "arm64"
ꢀꢀꢀꢀꢀꢀꢀꢀ
}步骤5、封装发布模块将步骤1构建的仿真模拟环境作为基础镜像用于部署可执行
程序,例如arm64架构的镜像,通过配置基础镜像、内部执行命令、外部执行命令、封装后版本、封装项目路径、工作区路径等参数,生成基础镜像的配置文件,配置文件以json文件形式保存,该配置文件用于生成dockerfile;基于dockerfile生成封装后的容器,将可执行代码复制到容器中;再将容器发送至目标平台上,通过配置文件启动容器完成可执行代码的部署。
[0039]
配置文件如下所示,其中部署平台信息从步骤1中建立的lzide.json文件中获取:{
ꢀꢀꢀꢀ
baseimage:"", #基础镜像名称和版本
ꢀꢀꢀꢀ
image_version:"", #封装后的镜像版本
ꢀꢀꢀꢀ
internal_cmd:[], #容器内部执行命令
ꢀꢀꢀꢀ
external_cmd:"", #容器外部执行命令
ꢀꢀꢀꢀ
deploy_cmd:"", #容器启动执行命令
ꢀꢀꢀꢀ
target_path:"", #封装项目路径
ꢀꢀꢀ
deployconfig: {},#部署平台信息
ꢀꢀꢀꢀ
workspace_path:"" #工作区路径}程序的容器化封装功能将读取配置文件中baseimage字段的基础镜像名称和版本找寻本地的docker镜像库,如本地不存在该镜像或镜像库中的镜像不满足目标平台部署的需求,则通过配置文件中deployconfig字段的目标平台架构和操作系统版本、internal_cmd字段的gcc、g++、python等运行环境获取镜像构建参数;下载匹配的镜像,基于下载的镜像生成的临时容器,在临时容器中预装qemu解释器和gcc、g++、python等运行环境;再读取交叉编译时cmakelist、pro文件所用依赖的动态库文件位置,并将其添加到配置文件中的external_cmd字段中,完成配置文件的更新,基于配置文件生成dockerfile;当dockerfile运行时,执行docker copy命令并将所有依赖的动态库拷贝到临时容器的workspace_path所配置的字段下位置,再读取配置文件中的deploy_cmd字段写入容器启动时自动执行的命令,如bash
ꢀ–
c“程序路径,传参等等”,由此得到execute镜像,其中仅包含可执行程序所依赖的库文件,进一步减少了目标平台的存储压力;再采用目标平台的发布与部署功能将execute镜像打包完成容器的发布,即:采用插件封装的nodejs的ssh2函数功能,将打包的镜像通过ssh的方式发送到目标平台,并以容器命令调用的方式解压、加载并运行,即可完成可执行程序的容器化部署。
[0040]
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

技术特征:
1.一种异构软件应用开发系统,其特征在于,包括项目创建模块、开发编译模块、异构仿真调试模块和封装发布模块;其中,项目创建模块用于创建项目或导入已有项目;开发编译模块,用于为创建的项目提供多语言辅助开发、gcc编译器选择、动态库导入及自动化构建功能;异构仿真调试模块,用于为创建的项目提供仿真模拟运行、仿真模拟调试、性能分析及dump文件解析功能;封装发布模块,用于为创建的项目提供程序的容器化封装、目标平台发布与部署功能;采用项目创建模块创建项目或导入已有项目,根据项目的文件类型调用开发编译模块完成应用程序的交叉编译,并生成目标平台下的可执行程序;再采用异构仿真调试模块加载通过编译的可执行程序,模拟目标平台的环境并进行可执行程序的仿真调试;最后采用封装发布模块将可执行程序及其所依赖的动态库封装到目标平台容器中,并打包生成镜像文件,当需要部署时根据目标平台的用户名和ip地址将镜像文件发布到目标平台上并启动运行。2.根据权利要求1所述的异构软件应用开发系统,其特征在于,所述模拟目标平台的环境并进行可执行程序的仿真调试的方式为:通过vscode的可视化调试工具结合交叉编译链工具的gdb调试器调用目标平台容器中的动态库,模拟目标平台的环境并进行可执行程序的仿真调试。3.一种采用权利要求1或2的异构软件应用开发方法,其特征在于,包括以下步骤:步骤1、构建仿真模拟环境,包括多种架构平台的调试及运行容器、编译工具、交叉编译链工具、qemu解释器工具及docker工具;步骤2、采用项目创建模块创建项目,在项目目录中添加.lzide文件夹并在该文件夹下增加lzide.json文件,lzide.json文件用于设置并保存项目属性为开发编译模块和封装发布模块提供配置信息;步骤3、完成项目代码的开发,使用开发编译模块读取lzide.json文件确定gcc编译器,根据gcc编译器从对应容器中获取动态库位置并将其写入cmakelist文件或pro文件中;确定编译工具,按照编译工具的命令格式构建项目代码的makefile文件,将makefile文件生成相应架构的可执行二进制文件,并记录可执行二进制文件的位置;步骤4、异构仿真调试模块根据lzide.json文件配置vscode的调试启动launch.json文件;步骤5、封装发布模块将步骤1构建的仿真模拟环境作为基础镜像用于部署可执行程序,通过配置基础镜像、内部执行命令、外部执行命令、封装后版本、封装项目路径及工作区路径生成基础镜像的配置文件,基于配置文件生成dockerfile;基于dockerfile生成封装后的容器,将可执行代码复制到容器中,再将容器发送至目标平台,通过配置文件启动容器完成可执行代码的部署。4.根据权利要求3所述的异构软件应用开发方法,其特征在于,所述步骤2中所述项目属性包括项目名称、编程语言、部署平台、调试编译入口文件、项目构建模式及项目目标文件。5.根据权利要求3所述的异构软件应用开发方法,其特征在于,所述步骤4的实现方式为:采用gcc_path字段中gcc编译器目录下的gdb路径替换launch.json文件中的gdb程序路径,同时,采用步骤3中记录的可执行二进制文件的位置替换launch.json文件中的可执行
程序路径,并在midebuggerserveraddress字段中写入默认的调试地址和端口。6.根据权利要求3所述的异构软件应用开发方法,其特征在于,所述步骤5中所述配置文件以json文件形式保存。7. 根据权利要求5所述的异构软件应用开发方法,其特征在于,还包括:通过vscode的gdb的远程调试功能,在容器中以异步执行的方式将容器中所调试的项目代码配置为使用前置任务,采用docker命令以midebuggerserveraddress字段中的端口和program中的可执行程序路径为参数启动qemu解释器的gdb server,并以后台形式运行容器。8.根据权利要求5所述的异构软件应用开发方法,其特征在于,还包括:在容器的根目录下启动http-server服务,当在容器中调式项目代码时,若宿主机的交叉编译链工具gdb无法找到容器中的符号表,则根据符号名称使用http-server服务下载符号名称对应的动态库。9.根据权利要求3所述的异构软件应用开发方法,其特征在于,所述步骤5还包括:当封装发布模块未查询到作为基础镜像的仿真模拟环境,则通过配置文件中的目标平台架构、操作系统版本、运行环境获取镜像构建参数,下载匹配的镜像,基于下载的镜像生成的临时容器,在临时容器中预装qemu解释器和运行环境;再将项目代码所依赖的动态库文件位置添加到配置文件中,完成配置文件的更新,基于配置文件生成dockerfile;当dockerfile运行时,将项目代码所依赖的动态库拷贝到临时容器中,并设置容器为自动启动,得到execute镜像;将execute镜像打包完成容器的发布及部署。10.根据权利要求9所述的异构软件应用开发方法,其特征在于,所述将execute镜像打包完成容器的发布及部署的方式为:采用插件封装的nodejs的ssh2函数功能,将打包的镜像通过ssh的方式发送到目标平台,并以容器命令调用的方式解压、加载并运行镜像。

技术总结
本发明公开了一种异构软件应用开发系统及方法,通过构建基于容器的仿真模拟环境,并在仿真模拟环境中完成程序的调试和测试,相较于在目标平台上执行在节省大量的时间和成本的同时提高了程序测试的精度,并且有助于设计和开发人员在实际系统实施之前发现和解决程序潜在的安全问题和风险,此外基于智能框架提供的可视化人机交互调试手段能够有效提高开发人员的调试效率。发人员的调试效率。


技术研发人员:张毅 杨艳 张魁罡 李贺 温研
受保护的技术使用者:北京麟卓信息科技有限公司
技术研发日:2023.07.12
技术公布日:2023/8/14
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐