调试系统

Clear Linux* OS 引入了一种使用 clr-debug-info 进行系统软件调试的新方法。在客户端,Clear Linux OS 调试系统会在调试会话期间通过网络即时获取所有必要的调试信息。在服务器端,系统将调试信息整理并压缩为较小的数据块,方便高效下载。

对于开发人员,此举可避免调试期间通常在缺少调试信息的情况下所出现的中断问题。对于存储空间有限的系统,此功能尤其实用。

后台

为在操作系统中进行一般使用而编译和封装的软件通常仅包含用于执行程序的组件,例如二进制文件和库。为提高效率,其他开发数据则会被分置并排除,例如实际的源代码和符号信息。

调试信息有助于将二进制代码与人类可读的源代码行和变量进行关联。多数情况下并不需要这些辅助信息;但如果缺少此类信息,调试程序便无法提供足够的可见性。

用途

clr-debug-info 系统已集成到 Clear Linux OS 并在安装后立即无缝结合。

  1. 安装 dev-utils bundle 文件。

    sudo swupd bundle-add dev-utils
    

    注解

    telemetricsperformance-tools bundle 文件也包含 clr-debug-info。

  2. 使用调试程序(如 GDB)针对程序启动调试会话。例如,要调试 gnome-control-center,请执行以下命令:

    gdb /usr/bin/gnome-control-center
    

单步执行程序且需调试信息时,clr_debug_daemon 便会在后台获取所需信息。

实施

Clear Linux OS 调试系统的实现为开源程序且可在 GitHub 上的以下位置找到:https://github.com/clearlinux/clr-debug-info/

Debug system communication flow

图 1:Clear Linux OS 调试系统的通信流程

Clear Linux OS 调试系统可实现在 /usr/lib/debug/usr/src/debug 挂载的 FUSE 文件系统。FUSE 文件系统会自动启动。可以执行 systemctl status clr_debug_fuse.service 来验证状态。

clr_debug_daemon 负责从服务器获取相应的软件包调试内容,并提供给需要它的所有调试程序。只要对本地 FUSE 文件系统发出请求,便会通过套接字将其激活。可以使用 systemctl status clr_debug_daemon.service 来验证状态。

Clear Linux OS 存储有专供 Clear Linux OS 调试客户端(位于 https://download.clearlinux.org/debuginfo/)使用而封装的调试信息内容