- 博客(533)
- 资源 (40)
- 收藏
- 关注

翻译 6 CPU Features For Performance Analysis
性能分析的最终目标是确定瓶颈并找到与之相关联的代码位置。不幸的是,没有预定的步骤可以遵循,因此可以以许多不同的方式进行处理。通常,对应用程序进行分析可以快速了解应用程序的热点。有时,这是开发人员需要做的一切来修复性能低效。尤其是高级性能问题通常可以通过分析揭示。例如,考虑这样一种情况,你使用感兴趣的特定函数对应用程序进行分析。根据你对应用程序的心理模型,你预计该函数是不经常使用的。但是,当你打开分析文件时,你会发现它消耗了大量的时间并且被调用了很多次。基于这些信息,你可以应用缓存或记忆化等技术来减少对该函
2023-08-01 23:35:40
821

原创 lighteffect架构优化详细设计文档
2]将framework和vendor目录下的LedManager类统一,通过aidl增加接口供apk和系统调用。原因:由于系统中兼容了lighteffect和lighteffect2,写代码时只记了一个,出现代码bug。强制关闭LED时,由于疏忽只杀了lighteffect进程,忘记杀lighteffect2进程。从图1-1我们可以看出,整个系统对于LED的控制比较混乱,很容易出现灯效控制混乱的结果。最后,Apk可直接跨过Framework层调用Hal层的lighteffect控制灯效。
2023-04-28 20:38:34
874

原创 UML顺序图规范
1 生命线一般为虚线2 消息(1)创始消息实心圆开头,实心箭头(2)同步消息实心箭头3 控制期表示阻塞调用4 返回值5 自身消息6 创建实例虚线实心箭头,新创建的对象实例画在创建时的高度上7 销毁对象用<<destroy>>和X表示对象的销毁8 图框常见的图框操作符:alt:选择性的片段,用于表示保护信息表达的互斥逻辑。loop:用于表示保护信息为真的循环片段。loop(n)指明循环的次数。opt:当保护信息为...
2021-10-31 13:28:13
1765

原创 [Android P]OpenCamera详细分析(Camera2+Hal3)
因为工作涉及到Android Camera系统的问题,本文就整理了在Android P上讲解OpenCamera比较详细的文章,结合Andriod P源码,以架构图、UML顺序图、UML类图和关键代码走读的方式,从App层、Framework层、Hal层详细分析了OpenCamera的流程。如有分析的不对的地方,欢迎大家指正~注意:Camera系统架构采用Camera2+Hal3。参考博客:Android Camera2+HAL3架构_既不是天才,便做那疯子!-优快云博客[A
2021-10-23 23:00:21
9389
4

原创 gdb如何从堆栈破坏的堆栈中定位问题(ucontext_t)
对于大多数堆栈破坏的情况没有有效方法,只能缩小问题代码范围,不断测试复现,找出容易复现的方式,一步步解决。但是有一种情况,如果你的堆栈破坏了,但是有ucontext_t进程上下文信息,那么是可以继续分析的!本文介绍了堆栈破坏但有ucontext_t进程上下文信息的前提下用gdb调试定位问题的过程。(1)使用带有debug信息的动态库(SDL,X11)todo优快云文章链接(2)查看log的Stack traceSegmentation fault(Invalid ...
2021-04-05 12:21:52
3409

原创 3 vim-config软件包
vim是linux系统中的编辑工具,配置好vim可以大大提高我们的工作效率。在使用vim时我们常常需要自己配置vimrc,安装需要的插件等。这一系列的配置比较繁琐,很多人望而生畏,于是渐渐放弃vim。最近看到一个博主关于[vi/vim使用进阶]的博客,学习后用起来非常方便。但弊端是配置的插件繁多,快捷键繁多,不易记忆,一旦更换电脑环境需要重新配置。为此,我将[vi/vim使用进阶]中的vim配置做成了软件包(vim-config)托管在Github上,到了不同环境,只需要./install.sh便可一键配置
2020-12-20 18:14:24
1530
4

原创 高通QFIL刷机:高通sdm845_la2.0用QFIL软件meta_build和flat_build刷机
[1 代码准备](i)amss_standard_oem:高通源码(ii)test_device:amss_standard_oem对应的二进制文件(高通已经编译)(iii)caf:高通源码对应的谷歌源码[2 编译源码]将amss_standard_oem/LINUX/android/vendor/qcom目录下的proprietary文件夹拷贝到caf/vendor...
2018-10-25 20:23:27
23069
13

原创 OpenCamera流程详细分析(Camera1+Hal1)
以本文记录下学习sdm660 camera模块的总结:首先特别感谢https://blog.youkuaiyun.com/armwind博主的文章(一)目录一. android camera系统架构图二. opencamera(1)Bn Bp对象的理解(2)回调函数的注册,监听(3)aidl—ICameraService,hidl--ICameraDevice三. takepic...
2018-10-15 11:19:26
5037
1
翻译 Chapter 4 Model fitting and optimization
4.1散点数据插值 1944.1.1径向基函数 1964.1.2过拟合和欠拟合 1994.1.3稳健的数据拟合 2024.2变分法和正则化 2044.2.1离散能量最小化 2064.2.2总变异 2104.2.3双侧求解器 2104.2.4应用:交互式着色 2114.3马尔可夫随机场 2124.3.1条件随机场 2224.3.2应用:交互式分割 2274.4其他阅读材料 2304.5练习 232图4.1数据插值和全局优化示例:(a)散点数据插值(曲线拟
2025-04-08 22:41:56
5
翻译 Chapter 3 Image processing
3.1点位操作员 1093.1.1像素变换 1113.1.2颜色变换 1123.1.3合成和遮罩 1133.1.4直方图均衡化 1153.1.5应用:音调调整 1193.2线性滤波 1193.2.1可分离过滤 1243.2.2线性滤波器示例 1253.2.3带通和可调滤波器 1273.3更多社区运营商 1313.3.1非线性滤波 1323.3.2双边滤波 1333.3.3二值图像处理 1383.4
2025-04-06 23:24:14
16
翻译 Chapter 2 Image formation
2.1几何基本元素和变换 362.1.1 2D变换 402.1.2三维变换 432.1.3 3D旋转 452.1.4 3D到2D投影 512.1.5镜头畸变 632.2光度图像形成 662.2.1照明 662.2.2反射率和阴影 672.2.3光学 742.3数码相机 792.3.1取样和混叠 842.3.2颜色 872.3.3压缩 982.4其他阅读材料 1012.5练习 102图2.1
2025-04-06 11:56:22
41
翻译 Chapter 1 Introduction
1.1什么是计算机视觉? 31.2简史 101.3书籍概述 221.4样本教学大纲 301.5符号说明 311.6其他阅读材料 31图1.2计算机视觉算法及其应用的一些示例。(a)面部检测算法,结合基于颜色的衣物和头发检测算法,可以定位并识别这幅图像中的个体(Sivic、Zitnick和Szeliski 2006)©2006斯普林格。(b)对象实例分割可以在复杂场景中区分每个人和物体(He、Gkioxari (et al.2017)©201
2025-04-06 00:26:04
6
翻译 Chapter 18 Looking Forward and Back
序列公司意识到,它能够迅速培训新工程师掌握并行计算的奥秘是不同寻常的,因此出版了一本精简的书籍,凝聚了公司的并行编程智慧[Seq88],这与几年前发表的两篇开创性论文[BK85,Inm85]相辅相成。保罗开始提问时指出,在1991年至2006年的15年间,一个并行系统的成本已经从一栋房子的价格降到了一辆中档自行车的价格,显然在未来15年内,直到2021年,还有很大的降价空间。因此,他发表了一段简短的、不置可否的讲话。对于编辑和撰稿人来说,这是第二版的终点,但对于那些愿意加入的人来说,这也是第三版的起点。
2025-04-05 17:17:05
30
翻译 Chapter 17 Conflicting Visions of the Future
预测是非常困难的,尤其是关于未来的。尼尔斯·玻尔本章呈现了一些关于并行编程未来的相互冲突的愿景。这些愿景中哪一个会成为现实尚不清楚,事实上,甚至不清楚它们是否会实现。然而,这些愿景都很重要,因为每个愿景都有其忠实的支持者,如果足够多的人对某件事深信不疑,你将不得不面对它对其支持者的思想、言语和行为产生的影响。此外,一个或多个这样的愿景最终将会实现。但大多数都是虚假的。分辨出哪些是哪些,你就会变得富有[Spi77]!因此,以下章节将概述事务内存、硬件事务内存、回归测试中的形式验证以及并行函数编程。但首先,我们
2025-04-05 14:27:45
51
翻译 Chapter 16 Ease of Use
同样地,对于线程1来说,要被阻塞,其他线程必须已经获取了元素2的锁,依此类推,直到线程N - 1,它获取了元素N - 1的锁。简而言之,如果你正在开发一个旨在帮助你完全不了解的人的软件项目,当这些人对你的项目提出批评时,你不必感到惊讶。两种传统的方法是按地址顺序获取锁,或者按照列表中出现的顺序获取锁,这样当头部作为被锁定的两个元素之一时,总是先获取头部的锁。17.明显的用法是错误的。要实现这一点,从零开始给列表中的元素编号,起始为表头,结束于列表最后一个元素(即表头前的一个元素,因为列表是循环的)。
2025-04-05 13:42:41
9
翻译 Chapter 15 Advanced Synchronization:Memory Ordering
进步的艺术是在变化中保持秩序,在秩序中保持变化。怀德海因果关系和排序是非常直观的,黑客通常对这些概念有很强的把握。这些直觉在编写、分析和调试顺序代码时不仅非常有用,而且在使用诸如锁定等标准互斥机制的并行代码时也非常有用。不幸的是,这些直觉在代码中完全崩溃,而是使用弱有序的原子操作和内存障碍。这类代码的一个示例实现了标准互斥机制,而另一个示例实现了使用较弱同步的快速路径。尽管侮辱了直觉,但有些人认为弱点是一种美德。美德或缺点,这一章将帮助您理解内存顺序,通过实践,这将足以实现同步原语和性能关键的快速路径。第1
2025-03-31 00:44:00
10
翻译 Chapter 14 Advanced Synchronization
如果一点知识是一件危险的事情,想想你可以用大量的知识做些什么吧!未知的本章介绍了用于无锁算法和并行实时系统的同步技术。尽管无锁算法在面对极端要求时可以非常有用,但它们并不是灵丹妙药。例如,如第5章末尾所指出的,在考虑无锁算法之前,您应该彻底应用分区、批处理和经过良好测试的打包弱api(参见第8章和第9章)。但在完成所有这些之后,您仍然会发现自己需要本章中描述的高级技术。为此,第14.1节总结了迄今为止用于避免锁的技术,而第14.2节给出了非阻塞同步的简要概述。内存排序也很重要,但它保证了自己的章节,即第15
2025-03-16 22:42:42
24
翻译 Chapter 13 Putting It All Together
你不学习如何射击,然后学习如何发射,然后学习做一个受控制的旋转——你学习发射-射击-旋转。安德的影子,奥森斯科特卡本章对并发编程谜题提供了一些提示。第13.1节考虑了反难题,Section13.2refurbishes参考计数,第13.3节有助于处理危险指针,第13.4节对序列锁定特性的推测,最后第13.5节反映了RCU救援。13.1反难题福特继续静静地数着数。这是你能对电脑做的最具攻击性的事情,相当于去对一个人说“血……血液……血液……血液……”道格拉斯亚当斯本节概述了解决难题的解决方案。13.1.1计数
2025-03-09 21:16:08
33
翻译 Chapter 12 Formal Verification
注意上面代码中的错误;我只证明了它是正确的,而没有尝试过。唐纳德克努斯并行算法可能很难编写,甚至更难进行调试。测试虽然是必要的,但却是不够的,因为致命的种族条件发生的概率极低。正确性的证明是有价值的,但最终会和原始算法一样容易出现人为错误。此外,不能期望一个正确性的证明会发现您的假设中的错误、需求中的缺陷、对底层软件或硬件原语的误解,或者您认为没有为其构建证明的错误。这意味着正式的方法永远不能取代测试。然而,形式化方法可以是验证工具箱中的一个有价值的补充。有一个工具可以以某种方式定位所有种族条件。存在许多这
2025-03-09 20:45:07
1414
翻译 Chapter 11 Validation
如果没有测试,就行工作。未知的我第一次有一些并行程序可以工作,但那只是因为我在过去的几十年里写了大量的并行程序。我有更多的并行程序愚弄了我,认为它们第一次就工作正常,而不是第一次就实际工作。因此,我需要验证我的并行程序。验证背后的基本技巧是意识到计算机知道什么出了问题。因此,你的工作就是强迫它告诉你。因此,这一章可以被认为是机器审讯的一个短程。但是你可以把好警察和坏警察的习惯留在家里。这一章涵盖了更复杂和更有效的方法,特别是考虑到大多数计算机都不能区分一个好警察和一个坏警察,至少据我们所知是这样。在许多最近
2025-03-02 22:16:31
46
翻译 Chapter 10 Data Structures
坏的程序员担心代码。好的程序员担心数据结构及其关系。拉纳斯托瓦尔兹对算法的认真讨论包括其数据结构的时间复杂度[CLRS01]。然而,对于并行程序,时间复杂度包括并发效应,因为这些影响可能会非常大,如第3章所示。换句话说,一个好的程序员的数据结构关系包括那些与并发性相关的方面。本章将揭示一些复杂的问题:1.然而,完全按照第6章中给出的良好建议设计的数据结构可能在某些类型的系统上完全无法扩展。2.完全按照第6章和第9章中给出的良好建议设计的数据结构仍然可能无法在某些类型的系统上进行扩展。3.即使是只读的无同步数
2025-02-26 00:48:23
14
翻译 Chapter 9 Deferred Processing
苍天不负有心人。紫罗兰推迟工作的策略可以追溯到有记录的历史出现之前。它偶尔会被嘲笑为拖延症,甚至纯粹是懒惰。然而,在过去的几十年里,工人们已经认识到这种策略在简化和简化并行算法方面的价值[KL80,Mas92]。信不信由你,并行编程中的“懒惰”往往优于和优于勤奋!这些性能和可伸缩性的好处源于延迟工作可以削弱同步原语,从而减少同步开销。那些愿意并能够阅读和理解这一章的人将会揭开许多谜团,包括:1.等待并发代码的粗心开发人员使用的引用计数陷阱。2.一个并发引用计数器,它不仅避免了这种陷阱,而且还避免了昂贵的原子
2025-02-23 22:06:48
67
翻译 Chapter 8 Data Ownership
避免锁定带来的同步开销最简单的方法之一是将数据分配给各个线程(或在内核的情况下,分配给各个CPU),使得每条数据仅由一个线程访问和修改。有趣的是,数据所有权涵盖了“三大”并行设计技术:它在不同线程(或CPU)之间进行划分,批量处理所有本地操作,并且将同步操作的消除推向了逻辑上的极致。因此,数据所有权被广泛使用也就不足为奇了:即使是初学者也会几乎本能地使用它。事实上,它的使用如此频繁,以至于本章不会介绍任何新的例子,而是会回顾前几章的内容。
2025-02-16 23:33:58
29
翻译 Chapter 7 Locking
锁定是最糟糕的通用方法 同步机制,但不包括所有这些 其他机制也时不时地被尝试过。 向温斯顿·丘吉尔的遗体和他所引用的任何人致歉 在最近的并发研究中,锁定常常扮演着反派的角色。锁定被指责引发死锁、队列问题、饥饿、不公平、数据竞争以及各种其他并发罪行。有趣的是,在生产级共享内存并行软件中,锁定同样扮演着生产工具的角色。本章将探讨这种反派与英雄之间的二元对立,如图7.1所示。和7.2。 这种两面性背后有很多原因: 1.锁定的许多缺点都有实用的设计解决方案,在大多数情况下都行得通,例如:
2025-02-10 00:00:48
27
翻译 Chapter 6 Partitioning and Synchronization Design
分而治之。马其顿的菲利普二世 本章介绍如何利用现代商品化的多核系统的优势,通过使用惯用法或“设计模式”[Ale79,GHJV95,SSRB00]来平衡性能、可扩展性和响应时间。正确划分的问题可以产生简单、可扩展且高性能的解决方案,而划分不当的问题则会导致缓慢且复杂的解决方案。本章将帮助你设计分区方法。 将这些内容融入你的代码中,同时讨论批处理和弱化的问题。“设计”这个词非常重要:你应该先进行分区,然后是批处理,接着是弱化,最后才是编码。改变这个顺序通常会导致性能和可扩展性下降,还会带来极大的挫败感。
2025-02-09 21:08:59
22
翻译 Chapter 5 Counting
简单如1、2、3! 未知的计数或许是计算机最简单、最自然的功能。然而,在大型共享内存多处理器上高效且可扩展地进行计数却颇具挑战。此外,计数这一概念的简洁性使我们能够探索并发的基本问题,而无需受复杂数据结构或同步原语的干扰。因此,计数为并行编程提供了一个极好的入门。 本章介绍了一些具有简单、快速和可扩展计数算法的特殊案例。但是首先,让我们了解您对并发计数已经了解了多少。 清单5.1:仅仅计数! 1未签名的长计数器=0;2 3静态__inlin
2025-02-06 22:42:51
64
翻译 Chapter 4 Tools of the Trade
你的好坏取决于你的工具,而你的工具的好坏也取决于你。 未知的本章简要介绍了并行编程的一些基本工具,主要关注运行在类似于Linux的操作系统上的用户应用程序可用的那些工具。第4.1节从脚本语言开始,第4.2节描述了POSIX API支持的多进程并行性以及对POSIX线程的讨论,参见第4.3节在其他环境中呈现模拟操作,最后,第4.4节帮助选择完成工作的工具。 请注意,本章仅提供简要介绍。更多细节可参见参考文献(和因特网),并在后续章节中提供更多信息。 4.1脚本语言至高无上的美德是简单。 亨利·沃
2025-02-04 23:38:29
40
翻译 Chapter 3 Hardware and its Habits
过早抽象是一切罪恶的根源。 成千上万的人大多数人直觉地认为,在系统之间传递消息比在一个系统内部执行简单的计算要昂贵得多。但同样,单共享内存系统中线程之间的通信也可能非常昂贵。因此,本章探讨了在共享内存系统中同步和通信的成本。这几页内容最多只能触及共享内存并行硬件设计的表面;希望了解更多细节的读者最好从亨尼斯和帕特森的经典著作的最新版本开始阅读[HP17,HP95]。 3.1概述机械同感:硬件和软件协同工作。 马丁·汤普森对计算机系统规格表的粗心阅读可能会让人相信CPU性能是
2025-02-04 21:45:54
29
翻译 Chapter 2 Introduction
首先,在过去的几十年里,由于摩尔定律的影响,多核系统的成本已经从房屋价格的数倍降到了一顿普通餐食的价格[Mo65]。如今,编程不再需要手动操作键盘。需要注意的是,并行编程的难度既是一个人为因素问题,也是一个并行编程问题的技术属性。因此,我们可以预期围绕并行系统的发明和创新水平将大幅提高,随着时间的推移,这种日益增长的熟悉度将使曾经昂贵得令人望而却步的并行编程领域变得更加友好和平凡。那些仍然坚持认为并行编程不可能实现的人,应该回顾一些较早的并行编程指南[Seq88,Bir 89,BK 85,Inm 85]。
2025-02-04 19:10:59
30
翻译 Chapter 1 How To Use This Book
对于从Linux内核角度介绍内存排序的教程,保罗·邦齐尼的LWN系列是一个很好的起点[Bon21a,Bon21e,Bon21c,Bon21b,Bon21d,Bon21f]。因此,那些在查看答案前真正努力解答问题的读者会发现,他们的付出得到了丰厚的回报,对并行编程的理解也得到了显著提升。(b)本贡献基于先前的工作,据我所知,该工作受适当的开源许可保护,我有权根据该许可提交修改后的作品,无论这些修改是全部或部分由我完成的,均需遵循相同的开源许可(除非我被允许以其他许可提交),具体如文件所示;
2025-02-04 11:42:05
95
翻译 32 Using History Interactively
历史扩展分为两个部分。从历史中选择的行称为事件,而对该行进行操作的部分称为单词。该行按照Bash的方式拆分成单词,因此被引号包围的多个单词被视为一个单词。如果单词指定符以‘^’,‘$’,‘*’,‘-’或‘%’开头,则可以省略该符号。历史扩展将历史列表中的单词引入输入流,使得重复命令、将先前命令的参数插入到当前输入行中或快速修正先前命令中的错误变得容易。历史库提供了一种历史扩展功能,类似于csh提供的历史扩展。在可选的单词指定符之后,您可以添加一个或多个以下修饰符的序列,每个修饰符前面都带有一个‘:’。
2025-02-04 11:28:26
11
翻译 31 Command Line Editing
作为特殊情况,如果此命令紧接其后是一个既不是数字也不是负号的字符,则下一个命令的参数计数将乘以四。例如,要给C-d命令提供一个参数1 0,你可以输入‘M-1 0C-d’,这将删除输入行上的接下来十个字符。按下ESC会切换到“命令”模式,在这里你可以使用标准的vi移动键来编辑该行的文本,用“k”跳转到前一条历史行,用“j”跳转到后一条历史行,等等。为了在emacs和vi编辑模式之间进行交互式切换,可使用命令M-C-j (在vi模式下绑定到emacs编辑模式,在emacs模式下绑定到vi编辑模式)。
2025-02-03 23:16:56
17
翻译 30 Reporting Bugs in gdb
假设发生了奇怪的事情,比如你的gdb副本不同步了,或者你在系统中遇到了C库中的错误。如果你告诉我们预期会出现崩溃,那么当我们的副本没有崩溃时,我们就知道错误并没有发生在我们身上。这通常会花费大量时间,而且不太有用,因为我们要找到错误的方法是通过在调试器下运行带有断点的单个示例,而不是从一系列示例中纯粹推断出错误所在。可能之前已经有人报告过这个错误了,但是除非你的错误报告是完整的、自成一体的,否则你和我们都不知道这一点。但是,你应该注意到,你对“无效输入”的理解可能是我们对“扩展”或“支持传统做法”的理解。
2025-02-03 23:08:06
48
翻译 29 JIT Compilation Interface
使用JIT编译的程序通常难以调试,因为它们的部分代码是在运行时生成的,而不是从目标文件中加载的,而gdb通常在这些目标文件中找到程序的符号和调试信息。为了调试使用JIT编译的程序,gdb提供了一个接口,允许程序在运行时将内存中的符号文件注册到gdb。当gdb附加时,它从全局变量中读取符号文件的链表,以查找现有代码,并在该函数中设置断点,以便它可以了解额外的代码。如果JIT在未注销代码的情况下释放或重新编译代码,则gdb和JIT将会泄漏与相关符号文件使用的内存。1.从链表中移除与该代码对应的代码条目。
2025-02-03 23:04:46
16
翻译 28 gdb Annotations
级别0表示不进行任何注释,级别1表示在gdb作为gnu Emacs的子进程运行时使用,级别3是适合控制gdb的程序的最大注释级别,而级别2注释已被废弃(参见gdb中“注释界面的局限性”部分)。其中,name是信号名称,例如SIGILL或SIGSEGV,strin g是信号的解释,例如Ille gal Instruction或Segmentation fault.intro-text,middle-text和end-text是为了用户方便而设置的,并没有特定的格式。普通注释,表示提示的结束;
2025-02-03 22:59:30
34
翻译 27 The gdb/mi Interface
27.1 功能和目的 基于gdb和miisaline的面向企业的文本界面通过使用‘--interpreter’命令行选项激活(参见第2.1.2节[模式选项],第13页)。该界面特别旨在支持将调试器作为更大系统中一个小组件的开发。 本章是thegdb/mi接口的规范,以参考手册的形式编写。 请注意,gdb/mi仍在建设中,因此下面描述的一些功能是不完整的,可能会发生变化(请参见第27.6节[gdb/mi开发和前端结束],第2
2025-02-03 22:54:49
40
翻译 26 Using gdb under gnu Emacs
在文本命令模式下,如果您输入M-x speedbar,Emacs会显示一个单独的窗口,当GUD缓冲区处于当前状态时,它会显示一个回溯。在这种情况下,gdb可能通过搜索环境的PATH变量找到您的程序,但在某些操作系统上,它可能找不到源代码。如果您需要用不同的名称调用gdb(例如,如果您保留多个配置,名称不同),您可以自定义Emacs变量gud-gdb-command-name以运行您想要的版本。我们称之为文本命令模式。gdb的初始工作目录打印在GUD缓冲区的第一行,这作为指定gdb操作文件的命令的默认值。
2025-02-03 22:39:53
24
翻译 25 gdb Text User Interface
因为在TUI模式下箭头键滚动的是活动窗口,所以除非命令窗口有焦点,否则readline无法正常使用箭头键。当另一个窗口处于活动状态时,必须使用其他readline键绑定,如C-p、C-n、C-b和C-f来控制命令窗口。gdb文本用户界面(TUI)是一个终端界面,它使用c urses库在单独的文本窗口中显示源文件、汇编输出、程序寄存器和gdb命令。您还可以在gdb运行期间通过各种TUI命令和键绑定,如C-xC-a,在TUI模式中切换进出。当gdb处于标准模式时,大多数这些命令会自动切换到TUI模式。
2025-02-03 22:35:43
35
翻译 24 Command Interpreters
gdb所使用的解释器在运行时可能无法动态切换。虽然您在启动时只能选择一个解释器,但您可以通过当前解释器使用适当的命令在任何解释器中执行命令。默认情况下,gdb将使用控制台解释器启动。目前,gdb支持两种命令解释器,即控制台解释器(有时称为命令行解释器或CLI)和机器接口解释器(或gdb/mi)。gdb支持多种命令解释器,并提供了一些命令基础设施,以便用户或用户界面开发者可以在解释器之间切换或在其他解释器中运行命令。gdb/mi也有类似的命令,但它仅在支持gdb/mi版本2(或更高版本)的gdb中可用。
2025-02-03 22:31:17
10
Systems.Performance.Enterprise.and.the.Cloud.2013.10
2024-06-23
DDI0487J-a-a-profile-architecture-reference-manual
2024-06-23
arm-cortex-a715-core-software-optimization-guide
2024-06-23
Performance Analysis and Tuning on Modern CPUs
2024-01-12
start_kernel.xmind
2020-02-15
start_kernel.xmind
2020-02-05
JNI函数接口大全工程实例.zip
2019-08-26
CMake中文手册
2015-12-14
Learning QGIS 2.0
2015-12-13
High efficiency video coding (HEVC) text specification draft 8
2015-07-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人