科百科
当前位置: 首页 范文大全

操作系统安装和调试(操作系统-操作系统的调试)

时间:2023-08-21 作者: 小编 阅读量: 1 栏目名: 范文大全

BCC工具箱满足了这些要求,并提供了动态,安全,低影响的调试环境。为了确保BPF指令的行为良好,在插入运行Linux内核之前,它们会通过verifier验证者传入。验证者会进行检查以确保说明不会影响系统性能或安全性。尽管eBPF为Linux内核中的跟踪提供了丰富的功能集,但是从传统上来说,使用其C接口开发程序非常困难。BCC工具还将C程序编译为eBPF指令,并使用探测或将其跟踪点插入内核中,这是两种允许在Linux内核中跟踪事件的技术。

我们总是时不时的提起调试。现在我们就好好看看这玩意儿。宽泛点说,调试就是在系统中发现和修复问题的行为,包括硬件和软件。性能问题也认为是bug,所以调试也包括性能调优,也就是寻求通过去除处理过程中的瓶颈来改善性能。接下来,我们会提到调试的过程、内核错误以及性能问题。暂时不涉及硬件调试。

错误分析

如果一个进程发生了错误,大多数的操作系统会把错误信息写进日志文件从来警告管理员或用户有问题发生了。操作系统也会用core dump(核心转储),是进程地址空间的内容以及有关进程状态的其他信息写出的一个磁盘文件,用来之后分析。运行的程序和core dump可以通过调试器探测到,这可以让程序员检查代码并且查看失败时进程地址空间到底发生了什么。

调试用户级别的进程代码是一个挑战。因为内核的大小和复杂度,操作系统的内核调试更是复杂,它既控制着硬件,有缺少用户级别的调试工具。当crash发生时,错误信息会被保存到日志文件中,内存状态信息会被保存到crash dump

操作系统的调试和进程调试,因为这两个任务天生的不同而通常使用不同的工具和技术。考虑到文件系统代码中的内核故障会导致内核在重启之前尝试将其状态保存到下文件系统上的文件中的风险,一种常见的技术是将内核的内存状态保存到为此保留的一部分磁盘中,该部分不包含文件系统。如果内存检测到不可回复的错误,则会将内存的全部内容,或至少是系统内存中内核拥有的部分,写入该磁盘区域。当系统重启时,将运行一个进程从该区域收集数据并将其写入文件系统中的crash dump文件中以进行分析。显然,这样的策略对于调试普通的用户进程是没有必要的。

性能监测和调优

我们之前性能调优就是提过通过去除处理过程中瓶颈来寻求改善性能。为了识别瓶颈,我们必须能够监测系统性能呢个。因此,操作系统必须有一些方式用来计算和展示系统的行为。根据是按每个进程或整个系统的观测角度的不同,每个工具都有自己的特征。为了达成这些观测,工具会使用这两个方法中的一个 --- counters计数或追踪tracing。下面,我们会探究一下这俩玩意儿。


计数器

操作系统通过一系列的计数器保持对系统行为的追踪,比如系统调用的次数或是对网络设备或磁盘的操作次数。下面是Liunx用作计数器的工具:

  • 进城级
    • ps - 报告对单个或选中进程的信息
    • top - 报告当前进程们的实时统计信息
  • 系统级
    • vmstat - 报告内存使用的统计
    • netstat - 报告网络接口门的统计信息
    • iostat - 包括对磁盘的I/O使用情况

在Linux中大多数基于计数的工具都是从/proc文件系统里读取统计信息的。/proc是一个假的文件系统,它只存在于内核的内存中,并且主要被用来查寻各个进程和内核的统计信息。/ proc文件系统组织为目录层次结构,每个进程(分配给每个进程的唯一整数值)显示为/ proc下的子目录。例如,目录条目/ proc / 2155将包含ID为2155的进程的每个进程统计信息。/proc这也有各种条目,用于各种内核统计信息,如下图:

Unbuntu中也提供了一个系统监测应用,一个包含进程进程,系统资源,和文件系统信息的工具。截图如下:

Ubuntu中的系统监测工具

追踪

尽管基于计数的工具只是简单的查询内核维护的某些统计信息中的当前值,但追踪工具则收集一些特殊时间的数据,诸如系统调用中包含的每一步。

下面是Linux中追踪事件工具的示例:

  • 进程级
    • strace - 追踪单个进程的系统调用
    • gdb - 一个源代码级的调试器
  • 系统级
    • perf - Linux性能收集工具
    • tcpdump - 采集网络包

柯林汉定律 (Kernighan's Law)

调试在一开始就比编写程序困难一倍。因此,按照定义,如果你的代码写得非常巧妙,那么你就没有足够的能力来调试它。

使操作系统在运行时更易于理解,调试和调优是研究和实践的活跃领域。新一代支持内核的性能分析工具在实现此目标的方式上有了重大改进。接下来,我们讨论BCC,一个动态Linux内核追踪工具包。


BCC

如果没有能够理解两组代码并能够检测它们之间的交互作用的工具集,几乎不可能调试用户级代码与内核代码之间的交互。为了使该工具集真正有用,它必须能够调试系统的任何区域,包括未考虑调试的部分,并且在不影响系统可靠性的情况下进行调试。该工具集还必须对性能产生最小的影响-理想情况下,它在不使用时不受影响,而在使用中的影响是不成比例。 BCC工具箱满足了这些要求,并提供了动态,安全,低影响的调试环境。

BBCBPF Compiler Collection)是个丰富的工具包,用于提供对Linux系统的追踪。BCC是e BPF(extended Berkeley Packet Filter,扩展的Berkeley数据包过滤器)工具的前端接口。 BPF技术是在1990年代初开发的,用于过滤计算机网络中的流量。 “extened扩展的” BPF(e BPF)为BPF添加了各种功能。 BPF程序是用C的子集编写的,并被编译成e BPF指令,这些指令可以动态地插入正在运行的Linux系统中。 e BPF指令可用于捕获特定事件(例如正在调用的某个系统调用)或监视系统性能(例如执行磁盘I / O所需的时间)。为了确保BPF指令的行为良好,在插入运行Linux内核之前,它们会通过verifier验证者传入。验证者会进行检查以确保说明不会影响系统性能或安全性。

尽管e BPF为Linux内核中的跟踪提供了丰富的功能集,但是从传统上来说,使用其C接口开发程序非常困难。开发BCC的目的是通过在Python中提供一个前端接口来简化使用e BPF编写工具的过程。 BCC工具是用Python编写的,它嵌入了与e BPF工具接口的C代码,后者又与内核接口。 BCC工具还将C程序编译为e BPF指令,并使用探测或将其跟踪点插入内核中,这是两种允许在Linux内核中跟踪事件的技术。

编写自定义BCC工具的细节不在讨论范围之内,但是BCC软件包提供了许多现有工具,用于监视正在运行的Linux内核中多个活动区域。

ubuntu下的安装命令如下:

sudo apt-get install bpfcc-tools linux-headers-$(uname -r)

其他系统可参考https://github.com/iovisor/bcc/blob/master/INSTALL.md

使BCC特别强大的是,它的工具可以在运行关键应用程序的实时生产系统上使用,而不会对系统造成损害。这对于必须监视系统性能以识别可能的瓶颈或安全漏洞的系统管理员特别有用。下图说明了BCC和e BPF当前提供的各种工具,以及它们跟踪Linux操作系统的几乎任何区域的能力。 BCC是一种快速变化的技术,不断地被添加新功能。

    推荐阅读
  • 长江鲥鱼灭绝了吗(长江鲥鱼介绍)

    1988年,长江鲥鱼被列入《中国濒危动物红皮书》。长江鲥鱼1974年曾高产达157.5万千克,之后资源量严重衰退,至1985年仅有3万千克。长江鲥鱼天然资源急剧减少的原因是水利建设切断了鲥鱼的产卵和索饵洄游通道、捕捞过度以及水域环境污染。长江鲥鱼曾是中国人餐桌上的美味,其与刀鱼、河豚并称“长江三鲜”。由于大量捕捞,长江中的鲥鱼已经基本绝迹,而刀鱼的产量也急剧下降,价格颇为昂贵。河豚,天生含有剧毒,被冠以最危险的美食之称。

  • 孕妇可以吃粽子吗(孕妇可以吃粽子吗早期)

    适用于脾胃虚寒所致的恶心、食欲减少、腹泻和气虚引起的汗虚、气短无力、妊娠腹坠胀等症,孕妇吃了是有好处的。做法:1、先将青梅、菠萝肉、冬瓜条各用白糖水煮,沥干水分。

  • amdvega等于多少显卡(超越GTX1080)

    近日,AMDVega显卡则出现在了Compubench数据库中,Vega显卡将有64组CU单元,基础频率1000MHz,加速频率1200MHz,性能高于GTX1080,但低于GTX1080Ti。不过,台积电的10纳米工艺制程尽管并不顺利,联发科方面也确认X30不得不推迟问世,起码要等到5月份才可以量产。而且5纳米预定2019年上半年进行风险性试产,比原定的2020年提前至少半年。联发科负责人朱尚祖不久前表示,今年五六月份X30才能顺利量产。

  • 证明十二星座男爱你的日常小事(十二星座男真心爱你的样子)

    如果他爱你,他一定会是这样的十二星座男生对你真心的样子,你值得看看哦~,下面我们就来说一说关于证明十二星座男爱你的日常小事?我们一起去了解并探讨一下这个问题吧!证明十二星座男爱你的日常小事如果他爱你,他一定会是这样的。十二星座男生对你真心的样子,你值得看看哦~水瓶座水瓶座的男生,喜欢一个人的话,就会一改往日飘忽不定的的状态,他会愿意用更多的时间陪伴恋人,去了解恋人,走进恋人的生活。

  • 荷东猛士的士高经典舞步(摩登淘金荷东猛士的士高No)

    以下内容希望对你有帮助!荷东猛士的士高经典舞步

  • 孩子叛逆期有多长时间(孩子叛逆期有多久呢)

    孩子叛逆期有多长时间?我们一起去了解并探讨一下这个问题吧!所以父母至关重要,要在一定程度上引导孩子,给孩子良好的教育,这样孩子的逆反期就会相应缩短。

  • 炒年糕的家常做法(这样做的炒年糕最好吃)

    以下内容大家不妨参考一二希望能帮到您!炒年糕的家常做法原料:年糕、黄芽菜、韩式辣椒酱、盐、鸡精。将黄芽菜清洗一下、捞出后放在案板上切开,待用。烧锅倒油烧热,下入切好的黄芽菜翻炒翻炒。接着,合入年糕,搁点韩式辣椒。调味炒匀,搁入香葱,即成。

  • 春节贺卡父母祝福语(新年贺卡给父母的祝福语)

    春节贺卡父母祝福语心中的思念,化作夜空璀璨的星星,闪耀着对您无限的感激与敬仰,在这样的日子,愿我们一起祈祷,妈妈,感恩节快乐,祝身体健康,一生平安。妈妈,今天是感恩节,我最需要感谢的人就是您,谢谢您给了我生命,并教导我成长。怀揣一颗感恩的心,心留一份感恩的情,无需豪言壮语,只用一条简简单单的祝福短信,悄悄地在这温馨的节日里,降临你的手机,我衷心祝你感恩节快乐!感恩节,我深深地感谢红尘中有你作伴。

  • 北方怎样储存普洱(家庭存普洱到底该密封还是通风)

    最近很多茶友后台问,最近买了好多普洱茶,那么自己在家中存放普洱茶时到底该通风还是密封?普洱茶在转化时有两种转化形式,一是内在活性酶转化,二是外酶转化。有专业人士针对普洱茶的存放做了专门实验。他们取同一年份、同样原料、同样工艺制作的古树茶分为了4份,按照不同的条件进行存放。自然存放不密封的普洱茶,4年后的汤色同样呈金黄色,但是茶中的香气几乎消失殆尽,虽然苦涩味有所下降,但茶味比较寡淡。

  • ipv4耗尽有什么影响(全球IPv4地址耗尽意味着什么)

    跟着小编一起来看一看吧!ipv4耗尽有什么影响全球IPv4地址耗尽,意思就是全球联网的设备越来越多,IP地址数量己经不够用了。如果再不想办法,后来的网络用户将无法获得网络“户口”,因此就无法上网。解决IPV4耗尽的方法主要是启用IPV6。IPv6相比IPv4最显著的变化在于地址长度增长到了128位,可用的地址数量大为增加,理论上有340万亿兆个IP地址,可以为沙漠里的每一粒沙子分配一个IP地址了。