LWN: Fedora将缺省提供debuginfod!

gdbundle-debuginfod:GDB和LLDB插件使GDB和LLDB的较早版本能够支持debuginfod Debuginfod插件 此仓库包含一个GDB和LLDB插件,以在没有内置debuginfod的GDB和LLDB版本中支持 。 警告:目前,这些插件仅支持下载符号/这些插件不支持源。 受支持的环境 这在LLDB和GDB中均有效。 从GDB 10.1开始,debuginfod支持已内置到GDB中,因此不需要此插件。 安装 这些插件可以通过两种不同的方式安装: 使用 。 来自GDB / LLDB插件管理器。 (首选方法) 手动的 使用gdbundle 首先,请遵循gdbundle的安装。 然后使用以下命令安装debuginfod插件: pip install gdbundle-debuginfod-plugin 手动安装 指示来... 用法 安装后,您将可以访问GDB和LLDB中的dbgd命令。 运行dbgd --help以查看命令的完整列表。 正常用法将在这里介绍。 默认情况 立即下载

关注了就能看到更多这么棒的文章哦~

Enabling debuginfod for Fedora by default

By Jake Edge
April 14, 2021
DeepL assisted translation
https://lwn.net/Articles/852416/

4 月初,Fedora 项目经理 Ben Cotton 发布了一项建议,在 Fedora 35 中缺省使用 Fedora 的 debuginfod 服务器。debuginfod 目的是帮助开发者用各种工具调试或追踪那些缺乏必需的源代码和调试符号的程序。服务器可以根据需求来直接向工具提供这些数据。但在默认打开这个功能之前,有一些安全和隐私问题需要解决。

实际上,这个功能所需的源代码和调试信息 Fedora 早就已经具有了,但是存放在 debuginfo 和 src RPMs 中,必须先被安装上,之后才能被调试工具访问到。这些 RPM 文件相当大,比起用户在追踪、调试过程中可能想看的那少数几个文件的符号表文件以及源代码文件来说,要大得多。此外,通过 DNF 安装它们的话还需要 root 权限,而用户可能不具备这种权限。debuginfod 功能所提供的一个非常有价值的服务,就是只根据合适的时机,以及用户的权限,来抓取必需的那一小部分数据。

2019 年 10 月的一篇 Red Hat 博客文章描述了 debuginfod,并指出它是 elfutils 工具中即将出现的一个新功能。它的背后想法是,GCC 和 LLVM 会在 object 文件中存储的 Build.ID hash 值可以用来识别对应的是哪个版本的符号表和源代码。Build.ID 是在 2007 年被添加到 Fedora 8 中的。Build.ID 可以直接根据 object 文件找出对应的调试符号表,并且源代码路径也存储在 object 文件中,也可以用来识别(并提供出)正确的源代码包。

2020 年 10 月,Frank Ch. Eigler 在 fedora-devel 邮件列表中发布了关于 debuginfod 功能和相应的测试服务器的说明。他想了解一下大家是否有兴趣在 Fedora 建立自己的服务器:

问题是 Fedora 本身并没有运行一个这样的服务器,而我们的测试服务器只能承载 debuginfo/debugsource rpms 以及 architectures 代码和符号表的一个子集。所以,Fedora 的开发者、用户无法获得所有信息,或者说,无法从官方渠道获得。我想知道现在是否是时候该建立这样的一个服务器了。如果大家有兴趣的话,我可以开始跟 Fedora 的基础设施人员讨论具体细节。

总体反应是很积极的,这也引出了在 Fedora 35 版本中设置 DEBUGINFOD_URLS 环境变量的提议,以便在需要调试信息的时候可以使用新的 Fedora debuginfod 服务器。正如该功能提案者 Eigler 所指出的,在 debuginfod.stg.fedoraproject.org 有一个暂存服务器(staging server),所以 Fedora 用户已经可以开始尝试了:

[……]大多数工具已经可以支持它了,试试吧。
% export DEBUGINFOD_URLShttps://debuginfod.stg.fedoraproject.org/
不久之后,所有的 F32+软件包/版本/架构都可以通过这种方式进行调试。

一旦这个暂存版本的服务器确实流行起来,那么就会把数据转移到正式的生产环境服务器 debuginfod.fedoraproject.org 上去,这也是 DEBUGINFOD_URLS 在 Fedora 35 中的缺省设置。总的来说,使用暂存服务器的效果很好,尽管 Michael Catanzaro 对它的性能有点担心:

我昨天开始测试暂存服务器。它看起来有点慢——我担心有人调试关于 WebKit 的东西会怎么样,在桌面版上这个可能会很常见——但除此之外它工作得非常好。印象很深。非常棒。

Owen Taylor 指出,该功能也适用于 Flatpak 的应用程序。Eigler 解释说,Catanzaro 看到的一些性能问题可能是因为暂存服务器在从 Fedora Koji 构建系统中来 pull RPM 文件引起的。在这个过程中确实有一些无法避免的延迟,当然使用缓存可能有帮助:

在从一些大 rpm 中寻找新文件的情况下,在解压(CPU 密集型的操作)、将选出的文件保存到临时磁盘(RAM/storage 密集型的操作),然后将文件发送给你(网络密集型的操作),这些方面确实会有一些延迟。

在服务器上,有一些预取/缓存配置选项,可以利用 fedora-infra 提供的功能强大的服务器。

在客户端也会积极进行缓存,对文件有为期一周的保留时间。

David Malcolm 有点担心 debuginfo 的 python 代码中用到的一些 Python 程序。早在 2010 年,在 Fedora 13 版本中,他就已经添加了这些程序,是用来协助在 GDB 对 Python 调试。但他对自动安装这些程序感到担心:

我对通过这种服务来提供 python 脚本感到紧张,因为比起 DWARF 格式来说,坏人利用 python 脚本做坏事的门槛要低得多,所以也许如果人们想要.py 文件,他们必须以传统的方式安装调试信息包?(在 rpm 文件中实际上也是.py 文件,但与手动安装 debuginfo rpms 相比,如果自动下载这些 py 文件而不给用户参与的机会,似乎可能会导致麻烦)。

Eigler 说,debuginfod 没有办法为.py 程序单独做什么,但如果大家认为重要的话,可以后面增加一个处理。他指出,数据的出处本身是为了提供安全保证的:

[……]我不确定被破坏的 DWARF 在本质上是否比被破坏的 Python 代码更安全。但所有这些都是基于这样一个前提的:文件来自一个普遍受信任的构建系统、提供了受信任的产物、由受信任的人维护。如果有恶意的文件进来,那么这个服务质量就会被降低,并且(或者)客户会受到影响。

类似地,Björn Persson 指出,该提案缺乏对各种安全和隐私问题的处理。该提案确实提到了在 2 月份宣布为 Debian 提供 debuginfod 服务后,Debian 用户提出的一些隐私问题,但也指出 openSUSE Tumbleweed 默认启用了该功能(2020 年 2 月),"我们没有听到说有什么争议"。如果本地系统缺乏适当的文件,那么当前在调试的文件的 Build.ID 和源文件名就会被泄露给服务器。Debian 在安装时增加了一个提问,来决定是否启用该功能。

除了隐私问题外,Persson 还希望该提案能解决服务器的安全问题:可能会有什么样的攻击、如何验证从服务器收到的文件,以及对文件做什么样的签名和认证。Eigler 感谢他的问题,并在提案的在线版本中增加了一个 "安全常见问题(Security FAQ)" 部分,对 Persson 的问题进行了初步解答。

正如大家也想到的一样,攻击范围在很大程度上取决于使用这些数据的工具、工具具有什么权限、稳健性、以及被调试程序有些什么权限。对于从服务器上提供的信息并没有增加特别的验证。正如 Eigler 对 Python 的回应所指出的,这一切都归结为对发行版的信任,以及对 HTTPS 的信任。正如 FAQ 中所说:

Debuginfod 服务器对原版发行版中的数据原样提供出来,并通过 HTTPS 安全地传输。在 Fedora 中没有每个文件的签名的底层机制,那么 debuginfod 也没有必要添加一个。因此,除了浪费带宽再下载相应的签名后的档案并进行比较外,没有任何其他机制可以手动验证这些文件。客户端代码将对文件权限采取一些基本措施,以减少发生意外改动的风险。原则上,如果收到的文件被篡改,那么同样的篡改者也可以扰乱用户的调试工具,甚至接管账户。

这个功能有许多好处,比如可以让那些无法使用 DNF 来安装调试符号表 package 的用户更方便,以及与通常相当大的调试信息包相比,可以大大减少需要发送和存储的数据量。debuginfod 服务器只发送用户当前调试任务所需的部分内容,而不会发送整个 package 的所有相关源代码和调试信息。

虽然可能需要为管理员增加一个明确的选项来禁用(或选择不使用)debuginfod 服务器,但 Fedora 35 似乎极有可能默认使用它们。同时,用户现在已经可以通过适当地设置 DEBUGINFOD_URLS 环境变量来开始查询服务器。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

elfutils-debuginfod-client-0.185-1.el8.i686.rpm 官方离线安装包,亲测可用 立即下载

相关推荐

抽象代数学习笔记(抽象代数的历史、运算)

1. 抽象代数历史 对于五次及以上的代数方程是否存在根式解这个问题,欧拉、拉格朗日、高斯等数学家都没得到答案,但是他们得出五次及以上的代数方程组不存在根式解的结论。19世纪初,阿贝尔提出五次及以上的代数方程不存在根式解,并找出一类特殊的五次及以上的代数方程可以用根式解表示出来。另外一个年轻的数学家伽罗华...

huangzhpei的博客 3667

gdb调试单独的debuginfo文件

本文主要介绍了如何制作单独的debuginfo文件,如何使用gdb调试单独的debuginfo文件。

EmptyStupid的博客 2421

一种车内UWB圆极化天线的理论推导及具体实现

本文详细描述了一款工作于UWB channel 9也即中心频率为7987.2MHz,带宽为499.2MHz的圆极化天线。首先是理论推导圆极化天线的物理尺寸参数,分析物理尺寸参数对天线性能指标的影响。然后分析圆极化天线在汽车驾驶室这种狭窄空间应用中带来的优势,也即可以最大化的极化损失多径,提高主径接收信号的信噪比。

weixin_44555637的博客 2961

Debian 使用debuginfo

使用Linux時,難免會需要追蹤系統安裝的軟體包的資訊,但如果自己重新編譯該軟體包又太花時間且費事。 因此這時候就可以使用發行版編好的debuginfo包,在Debian 12 bookworm這個方式非常容易。 首先在目錄下的.bashrc中增加 ```c export DEBUGINFOD_URLS="https://debuginfod.debian.net" ``` 重新source .bashrc即可,debuginfod是一個客戶端/服務器,可以通過 HTTP 自動將 ELF/DW

C_Linux_Linus的博客 653

随机截距交叉滞后模型RI-CLPM:原理、Mplus实现与结果解读

纵向面板数据分析中,传统交叉滞后模型(CLPM)常被用于探索变量间的时序关系,但其估计结果可能混淆了个体间稳定差异与个体内短期波动,导致交叉滞后路径出现偏差。随机截距交叉滞后模型(RI-CLPM)通过引入随机截距因子,将个体特质层面的差异与个体内动态过程分离,从而提供更纯净的个体内效应估计。该模型在组织心理学、发展心理学、成瘾行为等研究领域迅速普及,并成为顶级期刊审稿时常见的稳健性检验要求。本文从原理出发,系统讲解RI-CLPM的模型构建、识别条件、Mplus实操代码、输出解读及常见陷阱,并结合协变量处理、

weixin_33525298的博客 271

变压器耦合放大器(低频应用+高频应用)

变压器耦合放大器(低频应用+高频应用)

m0_54943120的博客 2274

rpm debuginfo包的作用

首先看一个例子 case1 main.c #include <stdio.h> int main() { int a=1; int b=2; int c=0; c=a+b; printf("c=%d\n",c); return 0; } gcc main.c -o main 生成可执行文件./main 然后gdb一下,如下: 因为,gcc默认是-O2选项,不含调试...

chenj_freedom的技术点滴 7182

精益六西格玛Python数字化应用开发-Day18 应用场景:家电企业生产效率优化

本文将重点介绍专门针对精益六西格玛黑带使用场景的 Python 库,这些库功能侧重于数据分析和流程优化,特别适用于 DMAIC 方法论和看板管理。考虑到读者具备中高级Python 使用经验,我们将深入探讨各库的高级功能和实际应用应用场景。 某家电企业生产线自动化程度高,数据量巨大,希望通过精益管理提升生产效率。企业借助 Python 脚本,打通各类数据源(MES、ERP、设备日志),自动归集生产数据,分析各工序的生产节拍、设备停机、效率损失,快速定位瓶颈环节

m0_56592100的博客 905

深入理解debuginfo

深入理解debuginfo Google Drive原文 @Chinainvent 一、关于debuginfo的疑惑 程序员应该都知道,为了能够使用gdb跟踪程序,需要在编译期使用gcc的-g选项。而对于系统库或是Linux内核,使用gdb调试或使用systemtap探测时,还需要安装相应的debuginfo包。 例如glibc及它的debuginfo包为: [yunkai@fedora t]$ rpm -qa | grep glibc glibc-2.18-12.fc20.x86_64

ayang1986的专栏 2014

autodl云服务器使用中的conda源报错

通过find path -name filename找到.condarc文件,在autodl服务器中,一般在/root/.condarc。为了利用jypyter打开conda虚拟环境运行,需要下载ipykenel。这个报错是源的问题,在通过源获取包元数据时出现了HTTP 429错误。通过conda换源解决。修改.condarc文件,命令: vim .condarc。但这样还不能解决问题,得把报错中有问题的源注释掉。通过以下命令添加清华镜像源。把报错的链接源注释如下。

Ty_kilig的博客 1584

基于非接触式微波雷达设计的跌倒检测预警系统【短信报警】

本项目选择基于非接触式微波雷达的跌倒检测预警装置作为技术核心,采用云帆瑞达的R60AFD1跌倒检测模组。这一模组能够根据人体的运动变化,如速度、距离和姿态等特征,判断是否发生跌倒,并可以持续监控老年人是否处于危险状态。此外,本项目还结合4G通信技术,通过Air724UG模块实现短信报警功能,一旦检测到跌倒事故,系统将自动通过4G网络向紧急联系人发送短信报警,及时通知亲属或医护人员进行救援。

1751

GDB调试GDB一例

高效的调试离不开调试符号。下载调试符号的最好方式是从符号服务器按需下载。近几年引入的debuginfod机制和微软的符号服务器很类似。为了给NDB增加debuginfod支持,去年暑假,我曾安排两位实习生做这个努力。一位做了一些调查,写了点试验代码,另一位推进的远一些,在ndw模块中实现了初步的代码,但是没有完成。今年暑假,继续安排一位实习生完成debuginfod的支持。走了几次弯路后,终于碰到...

advdbgger的博客 453

不藏了!Wireshark 命令、捕获、过滤器大全分享给你

Wireshark,这款广受欢迎的开源网络协议分析工具,堪称网络管理员、网络安全专家和网络爱好者的“显微镜”!它可以帮助我们捕获网络中的数据包,并提供详细的解码和分析能力。本文将为您全面剖析 Wireshark 的强大功能,从基础到高级,让你快速掌握这个神器!💡Wireshark 是一款功能强大的网络协议分析器,最早由 Gerald Combs 于 1998 年开发,经过多年发展,已成为网络诊断和分析的首选工具。

网络技术联盟站 725

如何打开core转存以及安装debuginfo

首先通过命令:ulimit -c 查看是否打开了core生成的开关,如果是0则表示没有生成,可以使用ulimit -c unlimited命令来打开开关,此命令表示生成的core大小是不受限制的。但仅在shell中执行该命令,在关闭shell之后,命令会失效。 如果想在整个系统中生效,方法如下: 1) 编辑/root/.bash_profile文件,在其中加入ulitmit -S -c un...

JuiceLiang的博客 628

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

从0开始安装fedora23的笔记-- 以及使用fedora的常规问题

关于安装过程中的笔记本 触摸板 和鼠标的问题? 在安装过程中, 系统只认从usb接口插入的鼠标和触摸板上的 "左键和右键"按钮. 触摸板上的鼠标只支持"移动"的功能, 但是触摸板上, 不能执行tap->click "单击""右键"等功能! 只有在系统安装好以后, 设置 "鼠标和触摸板"中的 "tap to click" 后, 触摸板上tap就等于click功能. !!这个要注

weixin_33814685的博客 266

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

TensorFlow 2模型评估与调优终极指南:如何避免过拟合并提升泛化能力

在深度学习项目中,模型评估与调优是确保模型性能的关键步骤。本文将为您介绍TensorFlow 2和Keras中避免过拟合、提升泛化能力的完整技巧,帮助您构建更稳健的深度学习模型。无论您是刚入门的新手还是有一定经验的开发者,这些实用的模型评估与调优策略都将帮助您显著提升模型性能。 ## 📊 为什么模型评估如此重要? 模型评估不仅仅是查看准确率那么简单。一个在训练集上表现完美的模型可能在真实世界

gitblog_00664的博客 553

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Memray安装与快速上手指南

Memray安装与快速上手指南 【免费下载链接】memray The endgame Python memory profiler 项目地址: https://gitcode.com/gh_mirrors/me/memray ...

gitblog_00716的博客 499

0094__gdb调试单独的debuginfo文件

gdb调试单独的debuginfo文件_debuginfod-优快云博客

行潇 417

VSCode Docker(Code Server)首次调试C++长时间下载debuginfo问题

VSCode Docker(Code Server)首次调试C++长时间下载debuginfo问题 VsCode Docker(Code Server)每次重启docker首次dbg C++都要花费很久去下载一个15.5M的debuginfo的解决方案

<font color="Pink">Tisfy的博客</font> 1511

Fedora27 源配置

一、添加阿里源,阿里源我感觉是现在国内比较好用的源,支持的发行版比较全。配置方法1、备份系统自带的源mv /etc/yum.repos.d/fedora.repo /etc/yum.repos.d/fedora.repo.backup #主源mv /etc/yum.repos.d/fedora-updates.repo...

weixin_30646315的博客 455

fedora 下kdump 配置

A):部署Kdump 部署 kdump 收集故障信息的步骤如下: 1) 设置好相关的内核启动参数 在 /boot/grub/menu.lst 中加入如下内容 crashkernel=128M@16M nmi_watchdog=1 其中crashkernel参数是用来为kdump的内核预留内存的; nmi_watchdog=1 是用来 激活NMI中断的, 我们在未确定故障是否关闭了中

cgm88s的专栏 1524

Linux如何安装kernel-debuginfo包以支持获取未压缩内核映像vmlinux?(yum | wget、rpm -ivh)

fill:#333;color:#333;color:#333;fill:none;8.6isos 下载镜像GA表示 普遍可用稳定版全量安装包括支持GNU模式进包括基础安装主要服务器命令行模式从网络安装BaseOS 包括源码独立包等x86_64/debug/Packages/安装包8.7...

技术札记 3188

debuginfo介绍

一、简介   深入理解debuginfo http://blog.youkuaiyun.com/chinainvent/article/details/24129311?reload   关于DWARF http://www.cnblogs.com/catch/p/3884271.html     二、gdb调试问题 Missing separate debuginfos, use: debu...

weixin_33937913的博客 1220

LWN:对比 SystemTap 和 bpftrace!

关注了就能看到更多这么棒的文章哦~Comparing SystemTap and bpftraceApril 13, 2021This article was contributed by...

Linux News搬运工 1619

Hunter性能优化指南:如何加速包下载和构建过程

Hunter是一个强大的CMake驱动跨平台C/C++包管理器,专门为开发者提供高效的依赖管理解决方案。如果你正在寻找终极的包下载加速和构建优化方法,这份完整指南将为你揭示10个简单技巧,让你的项目构建速度提升数倍!🚀 ## 为什么需要Hunter性能优化? 在C/C++项目开发中,依赖管理往往是构建过程中最耗时的环节。Hunter通过智能缓存和并行下载机制,能够显著减少包下载时间,但通过一

gitblog_01062的博客 511
上一篇: LWN:seccomp用户空间通知功能以及信号处理!
下一篇: LWN:在另一个进程的地址空间内执行代码!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值