vscode源码分析,vscode怎么看源码

http://www.itjxue.com  2023-01-21 16:00  来源:未知  点击次数: 

vscode 插件可视化制作和管理脚手架及原理解析

提到脚手架,大家想到的可能就是各种 xxx-cli,本文介绍的是另一种方式:以 vscode 插件的形式实现,提供 web 可视化操作,如下图:

下面介绍如何安装使用,以及实现原理。

vscode 安装 lowcode 插件,此插件是一个效率工具,脚手架只是其中一个功能,更多功能可以查看 文档 ,这集只讲脚手架相关的。

插件安装之后,打开脚手架界面,步骤如下图:

可以直接使用分享的脚手架,勾选选项后直接创建即可:

在模板项目根目录下创建 lowcode.scaffold.config.json 文件,将需要做内容动态替换的文件加上 .ejs 后缀。

ejs 语法

一个完整 lowcode.scaffold.config.json 配置:

formSchema :

formSchema.schema 为 x-render 表单设计器 导出的的 schema,会根据 schema 构建出表单界面, formSchema.formData 为表单默认数据

创建项目的时候会将表单数据传入 ejs 模板中进行编译。

excludeCompile :配置不需要经过 ejs 编译的文件夹或文件。

conditionFiles :根据表单项的值,在创建项目的时候将某些文件夹或文件删除,比如:

当 lint 这个表单项的值为 false 的时候,配置的文件夹或文件 ".eslintrc.js",".prettierrc.js",将会在创建的项目中排除掉。

将脚手架提交到 git 仓库,注意开放项目的公开访问权限。

修改 仓库 中 index.json 内容,提交 pr。

下集再说插件其他功能,插件源码:

vscode + gdb 远程调试 linux 内核源码(附视频)

配套视频: vscode + gdb 远程调试 linux (EPOLL) 内核源码 。

前段时间才搭建起来 gdb 调试 Linux 内核网络源码 ( 视频 ),但是 gdb 命令调试效率不高。磨刀不误砍柴工,所以折腾一下 vscode ,使调试人性化一点。

要搭建 vscode + gdb 调试 Linux 内核环境,首选要搭建: gdb 调试 Linux 内核源码 ( 视频 ) ,然后再配置 vscode 进行测试调试。

如何配置vscode的python编译环境

为VSCode安装扩展

用VSCode编程是需要依赖扩展的。写Python需要安装python的扩展,写C++需要安装C++的扩展。刚打开编辑器的时候,它一般会推荐一些扩展,你如果什么都不知道,可以先安装官方推荐的这些扩展:

修改VSCode的一些选项的默认值

VSCode有很多选项可以被修改,其各个选项都有默认值,这些默认值存储在"\settings.json"中(不过我没找到这个文件),用户如果想修改某些选项的值(比如:修改字体的大小),VSCode会自动帮我们生成一个“settings.json”文件,然后我们直接在这个文件中配置自己想要的值即可。

VSCode还没有创建"settings.json"文件:

VSCode帮我们创建了"settings.json"文件:

我们修改字号,让字体大一些。修改完后,保存一下,自定义的值就会覆盖默认值,修改就生效了。

用VSCode编写和调试python程序

下面就开始用VSCode编程了。因为python的配置超简单,我们以python为例来说明一下。

https //segmentfault com/q/1010000005897116

VSCode是以文件夹作为项目单位的。所以,我们如果要新建一个python项目的话,需要新建一个文件夹,然后在这个文件夹里面放置.py文件。然后让VSCode"打开文件夹",这样VSCode就能识别这个项目了。(当然可以用VSCode直接创建文件夹和文件。)

先创建test_python文件夹,里面创建一个test.py文件。

然后用VSCode加载它:

加载后的样子。可以看到,因为安装了python扩展,已经有高亮等效果了。

下面开始调试。

很显然要选择python选项:

然后VSCode为我们自动生成了"launch.json"文件,此文件有很多配置项,有的选项是默认从"settings.json"中取值的(比如"config.python.pythonPath")。如果"settings.json"中没有配置它们的话,调试时可能会无法启动。

同时,项目文件夹下面还自动生成了".vscode"文件夹。文件"launch.json"就在这个文件夹中。此时VSCode才算是真正意义上接手了这个项目文件夹。

网上的教程里,直接先在"settings.json"中把"python.pythonPath"先配置了一下,我当时不是太理解。现在看来,我们也需要配置一下了。

配置完之后,就可以正常调试程序了。

用VSCode调试带参的Python程序

修改test.py里面的代码,让它能打印参数(修改后的代码见下面的图片)。

修改launch.json,找到"configurations"中"name"为"Python"的那个配置块,给它添加"args"项,如下图所示:

添加前的配置块:

添加后的配置块:

文件launch.json修改完毕后,按F5调试程序,可以看到控制台输出的结果:

在按F5调试时,VSCode每次都会在程序入口处暂停住,这是配置项"stopOnEntry"在起作用,将其改成false后就不会出现这种情况了。

用VSCode自动格式化代码

VSCode“自动格式化代码”的快捷键是“Alt+Shift+F”。要格式化Python代码,需要安装Python包yapf(或autopep8、等)。

在命令行下执行:

[plain] view plain copy

python -m pip install yapf

然后配置"settings.json",启用yapf:

用VSCode对python代码进行语言分析

VSCode使用python的语言分析(写python代码的时候,编辑器会提示哪里出错,哪里的代码格式不规范),可以安装flake8(或pylint、等):

在命令行下执行:

[plain] view plain copy

python -m pip install flake8

然后配置"settings.json",启用flake8:

更换文件图标主题(使VSCode左侧的资源管理器根据文件类型显示图标):

可以选择已经存在的文件图标主题:"文件"-"首选项"-"文件图标主题"-"Seti(Visual Studio Code)"。

你也可以安装“vscode-icons”插件,安装的方式:

在“扩展(Ctrl+Shift+X)”中,搜索“vscode-icons”,然后安装并重新加载它,然后VSCode会让你执行一些操作,以激活"vscode-icons"插件。操作为:

"文件"-"首选项"-"文件图标主题"-"VSCode Icons"。对应到英文的话,应该是"File" - "Preferences" - "File Icon Theme"-"VSCode Icons"。

Guides(缩进线插件,让代码看起来更清晰):

在“扩展(Ctrl+Shift+X)”中,搜索“Guides”,然后安装并重新加载它即可。

vscode源码打包

1.打包方法: yarn run gulp vscode-win32-x64-archive,打包后生成的包在 .build\win32-x64\archive\VSCode-win32-x64.zip , 这种方法目前看似乎是从某个文件夹直接压缩。在这个之前,需要先做 yarn的动作。

2.另一种方法: yarn run gulp vscode-win32-x64-min, 打包后,会在 vscode 当前目录的上一级生成目录VSCode-win32-x64,带 min 和不带 min 的编译方法相比,min对于其中的js文件做过体积简化。我们编译应该用带min的方式来编译。

[openharmony]liteos-a编译过程分析

最近搞一个sensor接入openharmony的事情,在分析源码中的加速度计驱动相关源码时,发现不紧有BUILD.gn文件,还有Makefile文件,并且里面都有记录源文件路径。所以很困惑,openharmony是通过gn+ninja编译的还是通过make编译的?

为了搞清楚,所以针对liteos-a系统下的编译过程进行分析,在这里记录一下

通过官方文档看,liteos-a系统编译时用的是官方的hb命令 hb set 和 hb build 命令,所以入口肯定是hb工具

查看openharmony源码中build目录下有一个lite/hb目录(hb命令的源码目录,使用python脚本)

看鸿蒙研究站里面有一篇介绍hb命令的调试方法,通过vscode+python插件调试,参见 《v59.xx 鸿蒙内核源码分析(构建工具篇) | 顺瓜摸藤调试鸿蒙构建过程》

设置好之后就可以开始在vscode上调试

这个是整个编译的重点,通过调试可以看到最终是调用了gn/ninja/fs_make,如下分析

这个就是整体的编译过程了,先调用gn生成ninja文件,再通过ninja进行编译,最后通过fs_make制作镜像

因为内容太多,下面对这三个编译动作先做个整体的介绍,后续再对每一个进行详细分析

继续调试,会先进入 gn_build 接口,看实现就是调用了 gn gen 命令,如下

查看gn_cmd变量,详细命令为(比较多,经过了整理):

这个命令之后,就会将工程中所有用到的 BUILD.gn 文件转换成 module_name.ninja 文件(类似 makefile )供后面 ninja 命令(类似 make )调用并进行编译

再继续调试就会进入 ninja_build 接口,实现以及执行的详细的 ninja 命令如下

这个命令与 make 命令类似,但是注重速度(详细信息可以在网上搜索两者区别);此命令执行即是通过build.ninja/toolchain.ninja/各BUILD.gn转换的.ninja来进行编译,并生成.bin/.so/.a等文件

整个编译OK之后会输出如下图中成功信息

在out目录下就会生成烧录用到的镜像文件,如下图

delve基础用法及在vscode中的使用

delve 是go语言的调试器,delve的目标是为go提供一个简洁、功能齐全的debug工具,delve易于调用和使用。

为了能够编译delve,需要安装Go 1.10或更高版本

安装好go后,直接go get即可安装,更多安装教程见:

go get github.com/go-delve/delve/cmd/dlv

安装好后,在终端执行dlv或者dlv help 会看到dlv的帮助信息,则说明安装成功

dlv常用命令

delve的目标是成为一个简洁而强大的工具。但如果你不习惯在编译语言中使用源码调试,则可能令人困惑。本文档将提供开始调试go程序所需的全部信息。

调试例子程序如下

├── go.mod

├── go.sum

├── main.go

├── test

└── utils

├── util.go

└── util_test.go

调试程序主要有三个文件,main.go、util.go、util_test.go,内容如下,比较简单,go包管理工具使用的是go module,模块名为test

在vscode debug 的设置中配置launch.json文件

mode 设置为debug时,program的内容${fileDirname}即可,mode 设置为exec时,program的值为二进制文件的路径,通过设置mode的值,即可调试源码和二进制程序(也需要有源码)。mode模式为auto时,测试了下,vscode 并不能通过program的内容来判断是debug还是exec

远程调试时,需要在远程也有源码、二进制包和dlv工具

在远端执行dlv命令

dlv debug --headless --listen=:8989 --api-version=2 --accept-multiclient #用degbug方式启动远程应用程序

dlv exec --headless --listen=:8989 ./test --api-version=2 --accept-multiclient # exec执行当前目录下的test二进制文件

--listen:指定调试端口

--api-version:指定api版本,默认是1

--accept-multiclient:接受多个client调试

在vscode中线下好源码,和远端的源码结构一致。launch.json配置如下:

在vscode中打好断点后,就可以进行远程调试了

(责任编辑:IT教学网)

更多

推荐PowerPoint文章