Golang Delve DAP Attach 远程调试

准备 远程服务器安装Delve调试器 1 go install github.com/go-delve/delve/cmd/dlv@latest 本地开发环境及其源码,进行编译后推送到远程服务器 编译时请注意不要启用优化或者去除调试信息,使用以下命令构建 1 go build -gcflags "all=-N -l" -o binaryname 服务器启动程序运行,然后使用命令行启动附加当前服务进程并转发调试信息 1 dlv attach $ServicePID --headless --listen=:$DebugServerPORT --api-version=2 --log --log-output=dap,debugger --only-same-user=false 调试 在支持DAP协议的IDE或编辑器上连接到当前调试进程,以vscode为例。 点击导航栏的运行按钮,点击添加配置 选择connect to server选项 输入远程服务器的地址和端口号,会自动生成好配置文件。 对于有防火墙的设备注意放行端口,对于公网服务器请注意采取其他安全措施,如使用ssh转发端口到本地进行安全的调试服务,或者使用防火墙访问限制等功能。 调试过程与常见调试过程相同,对于有多模块(多main.go)请注意是否当前源码路径与远程二进制文件相同,否则可能导致意外。

April 23, 2025 · 1 min · 36 words · ecturing

Golang常见面试题

golang基础 map和slice的扩容机制 slice扩容 slice扩容主要依赖于growslice函数以下是growslice函数关于扩容部分的细节 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 func growslice(oldPtr unsafe....

June 11, 2024 · 9 min · 1813 words · ecturing

OrangePi4LTS USB Uboot

OrangePi-Build下载 在GitHub中搜索xunlong-OrangePi-Build,这是OrangePi官方提供的构建工具。主要用于构建Uboot,Kernel和编译内核,该构建系统有版本限制要求,推荐Ubuntu20.04版本,版本过高或过低还有wsl均不支持编译,配置好环境然后下载完成后命令行运行./build.sh进行编译。进入以下界面 选择Uboot单元,并选择自己的开发板后,系统会自动下载依赖然后进行编译。 可能遇到的故障 如果仅仅是升级Uboot,编译好后直接会产生deb文件,直接参考手册安装,运行即可,但是对于需要修改启动项来说,需要串口工具进行连接,进入Uboot命令行。官方推荐ch340的USB转串口工具,可是我使用的ch340工具在mobaxterm中存在输入乱码,SecureCRT直接无法输入,流模式已经关闭仍然无效,在网络查询均没有结果,遂尝试降低波特率,OrangePi4LTS的Uboot和系统波特率均为1500000,高波特率有部分USB转串口工具支持不全。波特率有两个阶段修改,1是在Uboot阶段,2是系统启动后阶段,我们修改Uboot阶段波特率以便能进入Uboot命令行。 首先上面的构建工具先要完整构建一遍,构建后进入userpatches文件夹,打开config-default.conf文件,修改IGNORE_UPDATES=““的值为INGORE_UPDATES=“yes”,然后进入u-boot文件夹,进入编译的Uboot版本文件夹,然后进入configs文件夹,搜索自己的主板_defconfig配置文件,找到后搜索CONFIG_BAUDRATE字段,修改波特率,然后重新进入编译界面进行编译Uboot。由于OrangePi本身不支持U盘中系统的直接启动,所以我们通过再SD卡或Emmc中烧录Uboot,从Uboot引导U盘的系统。所以,进入u-boot文件夹,进入生成的uboot资源文件夹,拷贝出idbloader.img和u-boot.itb文件,然后进行烧录。 USB系统准备 使用OrangePi官方提供的系统以及刷写系统教程进行系统刷入到USB设备,此处不再赘述 烧录Uboot 对于烧录程序,我们通过对构建系统产生的deb文件进行解包,发现内部存在一个sh脚本存在着对uboot的烧录程序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 DIR=/usr/lib/linux-u-boot-next-orangepi4-lts_3.1.0_arm64 write_uboot_platform () { if [[ -f $1/rksd_loader.img ]]; then dd if=$1/rksd_loader.img of=$2 seek=64 conv=notrunc status=none > /dev/null 2>&1; else if [[ -f $1/u-boot....

May 28, 2024 · 2 min · 227 words · ecturing

非阻塞并发队列算法

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 structure pointer_t {ptr: pointer to node_t, count: unsigned integer} structure node_t {value: data type, next: pointer_t} structure queue_t {Head: pointer_t, Tail: pointer_t} initialize(Q: pointer to queue_t) node = new_node() // 创建新的空闲节点 node->next....

April 23, 2024 · 2 min · 312 words · ecturing

关系代数

关系代数 关系代数:并,交,差 知识较为简单,并,交,差其实就是类似于高中数学的集合的并,交,差 并:$\cup$ 取并集:二者元素之和去重 交:$\cap$ 取交集:二者元素之和留重复 差:$-$ 取差集:顾名思义,两个关系之间独有的部分,元组做差有顺序差别 笛卡尔积:$\times$ 笛卡尔积:笛卡尔积类似于乘积,是两个关系中所有可能出现的元组组合关系 关系代数:投影,选择与连接 投影与选择的关系:投影对应sql的where语句,选择对应sql的select语句。 投影:$\pi$ 投影是根据规则从一个关系中选择某些列,形成一个新的关系。 选择:$\sigma$ 对应SQL的select语句,基于某种条件从关系中选择出一些元组。 实例 1 select username from user where userid='1' $$ \Pi_{username}(\sigma_{userid=’{1}’}(user)) $$ 连接 $\theta$连接:$\theta$ $\theta$连接本身是从两个关系的笛卡尔积中获取满足条件的元组,可以是等值,也可以是大于小于 等值连接:R与S的A,B元组的等值连接:$R\underset{{A=B}}{\bowtie}S$ 自然连接:$\bowtie$ 一种更为常见的连接方式,若关系R,S有同名的属性,而且连接条件是R和S中的同名属性列值相同,则称为自然连接。 除 最复杂的计算,

April 6, 2024 · 1 min · 36 words · ecturing