10 Star 73 Fork 138

OpenHarmony / startup_init_lite

 / 详情

进程级别调试变量传入通道

In Design
Requirement
Opened this issue  
2021-09-03 16:02

【需求价值】:
为了临时启动一些调试功能,开发人员要在进程启动时,提前配置一些变量,比较常见的有环境变量和系统参数两类。
但是由于系统服务进程是通过init拉起,应用是通过appspawn启动,在他们启动的点上都无法注入环境变量。

当前需要这类功能的场景:

  1. 单进程打开malloc hook
  2. 单进程打开asan
  3. 单进程打开coredump
  4. 单进程打开LD_DEBUG

当前会存在下列问题:

  1. 改代码不够HACK
  2. 某些变量的生效时间要求比较早,例如asan、malloc hook、LD_DEBUG等,改进程main函数以后的代码没有意义
  3. 某些变量需要在main函数之前工作,例如asan、malloc hook等,此时进程名还未设置,即使linker也不知道当前进程叫什么名字,无法精确匹配单个进程,只能通过父进程设置把这一族进程都配置上。
  4. 如果每次调试需要修改initcfg会比较麻烦,对IDE调试APP场景也不可行。

【需求描述】:

开发一套环境变量的传入通道,通过命令行设置一组变量,包括目标进程和变量键值对,设置完成后,重启服务或者APP就可以让变量在指定进程生效。

【方案描述】:

  1. 通过sysparam设置目标进程,例如debugenv.name为hilogd,weston,这样就设置了一组进程,此处可以是用进程名,或者专门分配一组ID,用于规避同名进程问题。
  2. 通过sysparam设置目标进程,例如debugenv.vars为"LD_DEBUG=2 ASAN_OPTIONS=/etc/option.txt",这样就设置了启动时传入的环境变量列表
  3. 通过init或者appspawn fork启动某个进程时,判断要启动的子进程是否是目标进程,如果是则在fork完的子进程中append上debugenv.vars中环境变量。

需要确认:

  1. sysparam长度限制
  2. 方案本身安全性,是否需要对环境变量进行白名单过滤

【配套文档】:

【验收标准】:

Comments (1)

stesen created需求
stesen set assignee to stesen
stesen set top level to Low
stesen set priority to Secondary
stesen set related repository to OpenHarmony/startup_init_lite
stesen added
 
SIG_BscSoftSrv
label
stesen assigned collaborator handy
stesen assigned collaborator chuxuezhe11
stesen assigned collaborator Maplestory_zeng
stesen assigned collaborator dhy308
stesen changed issue state from 待办的 to 设计中
stesen assigned collaborator 张宪锋
Expand operation logs

20210908 SIG讨论记录:
//待整理
设置:
param set <persist.>hiviewdfx.debugenv.Name1 "LD_DEBUG=2 ASAN_OPTIONS=/etc/option.txt"
param set <persist.>hiviewdfx.debugenv.Name2 "LD_DEBUG=1"
规则
1. 单次设置,重启失效:hiviewdfx.debugenv.目标进程标识
2. 重启不失效:persist.hiviewdfx.debugenv.目标进程标识
2. 环境变量:Key=Value,多个环境变量中间以空格分隔

清理:
param set <persist.>hiviewdfx.debugenv.Name "xxx"
param不支持删除,因此设置为其他无意义的值即可

目标进程标识匹配方式:

  1. init启动service,匹配cfg中service name
  2. app启动匹配包名
  3. hdf启动匹配devHostName
    其他情况:
  4. cmdline
  5. __progname,/proc/xxx/comm

权限:
属性所有进程能读,写需要root权限

[图片上传中…(image-LxFZuktYpngREMeI4bdQ)]

Sign in to comment

Status
Assignees
Projects
Milestones
Pull Requests
Successfully merging a pull request will close this issue.
Branches
Planed to start   -   Planed to end
-
Top level
Priority
Duration (hours)
参与者(6)
5200794 stesen 1599180294
C
1
https://git.oschina.net/openharmony/startup_init_lite.git
git@git.oschina.net:openharmony/startup_init_lite.git
openharmony
startup_init_lite
startup_init_lite

Search