问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

lldb是什么意思

发布网友 发布时间:2022-04-08 22:28

我来回答

4个回答

懂视网 时间:2022-04-09 02:49

在使用LLDB前,我们需要了解一下LLDB的命令结构及语法,这样可以尽可能地挖掘LLDB的潜能,以帮助我们更充分地利用它。

LLDB命令的语法有其通用结构,通常是以下形式的:

<command></command> [<subcommand> [<subcommand>...]] <action> [-options [option-value]] [argument [argument...]]</action></subcommand></subcommand>


其中:

(命令)和(子命令):LLDB调试命令的名称。命令和子命令按层级结构来排列:一个命令对象为跟随其的子命令对象创建一个上下文,子命令又为其子命令创建一个上下文,依此类推。

:我们想在前面的命令序列的上下文中执行的一些操作。

:行为修改器(action modifiers)。通常带有一些值。

:根据使用的命令的上下文来表示各种不同的东西。

LLBD命令行的解析操作在执行命令之前完成。上面的这些元素之间通过空格来分割,如果某一元素自身含有空格,则可以使用双引用。而如果元素中又包含双引号,则可以使用反斜杠;或者元素使用单引号。如下所示:

1 2 (lldb) command [subcommand] -option "some "quoted" string" (lldb) command [subcommand] -option ‘some "quoted" string‘

这种命令解析设计规范了LLDB命令语法,并对所有命令做了个统一。

命令选项

LLDB中的命令选项有规范形式和缩写形式两种格式。以设置断点的命令breakpoint set为例,以下列表了其部分选项的格式,其中括号中的是规范形式:

 

breakpoint set    -M <method> ( --method <method> )    -S <selector> ( --selector <selector> )    -b <function-name> ( --basename <function-name> )    -f <filename> ( --file <filename> )    -l <linenum> ( --line <linenum> )    -n <function-name> ( --name <function-name> ) …</function-name></function-name></linenum></linenum></filename></filename></function-name></function-name></selector></selector></method></method>
各选项的顺序是任意的。如果后面的参数是以”–“开头的,则在选项后面添加”—“作为选项的终止信号,以告诉LLDB我们处理的选项的正确位置。如下命令所示:
(lldb) process launch --stop-at-entry -- -program_arg_1 value -program_arg_2 value

如上所示,命令的选项是—stop-at-entry,参数是-program_arg_1和-program_arg_2,我们使用”—“将选项与参数作一下区分。

原始命令

LLDB命令解析器支持”原始(raw)“命令,即没有命令选项,命令字符串的剩余部分未经解析就传递给命令。例如,expression就是一个原始命令。

不过原始命令也可以有选项,如果命令字符串中有虚线,则在命令名与命令字符串之间放置一个选项结束符(—)来表明没有命令标记。

我们可以通过help命令的输出来查看一个命令是否是原始命令。

命令补全(Command Completion)

LLDB支持源文件名,符号名,文件名,等等的命令补全(Commmand Completion)。终端窗口中的补全是通过在命令行中输入一个制表符来初始化的。Xcode控制台中的补全与在源码编辑器中的补全方式是一样的:补全会在第三个字符被键入时自动弹出,或者通过Esc键手动弹出。

一个命令中的私有选项可以有不同的完成者(completers)。如breakpoint中的—file 选项作为源文件的完成者,—shlib 选项作为当前加载的库的完成者,等等。这些行为是特定的,例如,如果指定—shlib ,且以—file 结尾,则LLDB只会列出由—shlib 指定的共享类库。

Python脚本

对于高级用户来说,LLDB有一个内置的Python解析器,可以通过脚本命令来访问。调试器中的所有特性在Python解析器中都可以作为类来访问。这样,我们就可以使用LLDB-Python库来写Python函数,并通过脚本将其加载到运行会话中,以执行一些更复杂的调试操作。

在命令行中调试程序

通常我们都是在Xcode中直接使用LLDB调试器,Xcode会帮我们完成很多操作。当然,如果我们想让自己看着更Bigger,或者想了解下调试器具体的一些流程,就可以试试直接在终端使用LLDB命令来调试程序。在终端中使用LLDB调试器,我们需要了解以下内容:

1.加载程序以备调试

2.将一个运行的程序绑定到LLDB

3.设置断点和观察点

4.控制程序的执行

5.在调试的程序中导航

6.检查状态和值的变量

7.执行替代代码

了解在终端中这些操作是如何进行的,可以帮助我们更深入的了解调试器在Xcode中是如何运作的。下面我们分步来介绍一下。

指定需要调试的程序

首先我们需要设置需要调试的程序。我们可以使用如下命令做到这一点:

1 2 $ lldb /Projects/Sketch/build/Debug/Sketch.app  Current executable set to ‘/Projects/Sketch/build/Debug/Sketch.app‘ (x86_64).

或者在运行lldb后,使用file命令来处理,如下所示:

1 2 3 $ lldb  (lldb) file /Projects/Sketch/build/Debug/Sketch.app  Current executable set to ‘/Projects/Sketch/build/Debug/Sketch.app‘ (x86_64).

设置断点

在设置完程序后,我们可能想设置一点断点来调试程序。此时我们可以使用breakpoint set命令来设置断点,这个命令简单、直观,且有智能补全,接下来我们看看它的具体操作。

如果想在某个文件中的某行设置一个断点,可使用以下命令:

1 (lldb) breakpoint set --file foo.c --line 12

如果想给某个函数设置断点,可使用以下命令:

1 (lldb) breakpoint set --name foo

如果想给C++中所有命名为foo的方法设置断点,可以使用以下命令:

1 (lldb) breakpoint set --method foo

如果想给Objective-C中所有命名为alignLeftEdges:的选择器设置断点,则可以使用以下命令:

1 (lldb) breakpoint set --selector alignLeftEdges:

我们可以使用—shlib 来将断点限定在一个特定的可执行库中:

1 (lldb) breakpoint set --shlib foo.dylib --name foo

看吧,断点设置命令还是很强大的。

如果我们想查看程序中所有的断点,则可以使用breakpoint list命令,如下所示:

热心网友时间:2022-04-08 23:57

LLDB是LLVM的一个项目,该项目基于LLVM与clang的数据库来提供一个强大的本地调试库,==较常见的应用在ios的Xcode中

热心网友 时间:2022-04-09 01:15

刚才你还问了llsb,我确定那个是丽丽傻比,这个lldb是丽丽逗比。。。。。。。

热心网友 时间:2022-04-09 02:50

程序调试工具。。。你可比较一下gbd
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
"你是在哪看到我的照片?"怎么说英语 留恋地看着我的照片用英语怎么说? 高德iphone地图下载 苹果手机高德地图怎么下载地图 孕中期适合出游吗 哪些孕妇不适合长途旅行 孕妇坐长途车旅行的好处 孕妇出游的最佳时间 孕晚期适合出游吗 孕妇外出旅行禁忌 小米11烧wifi啥表现 胶州发5斤小米大约多少钱邮费 小孩子学英语有必要吗,看到很多朋友都给自己的小孩报 对当今中国普通家庭孩子来说,学习英语有必要吗? 少儿有必要从小学习英语吗? 孩子为什么要学习英语 论幼儿英语教育的必要性? 幼儿日常生活当中,英语的学习有哪些重要性? 孩子现在三岁半了,你认为有必要学习英语吗? vivoY13怎么截图 在孩子小时候就开始学习英语,是有必要的吗? 我用的是y13手机,请问微信如何截图 儿童学英语的重要性,你认为有哪些? 少儿学习英语的重要性有哪些呢? 中考字音字形辨析小窍门之字形辨析「泰辅导」 中考字音字形选择题怎么提高正确率 求中考语文选择题里面的那些选错拼音,字形和成语 vivoy13的手机怎么使用微信截屏啊 谁有中考全程复习训练语文前面识记字音和辨析字形的答案啊???求 002130和002559止盈止损多少价位合适,具体价格属于蓝筹,成长,概念还是周期,2只股都说一_百度问一问 沃尔核材股票分析:沃尔核材002130为什么 用小车办个车主信用卡哪个银行会比较高额度?谢谢 有车办信用卡哪家额度高 事业单位的副科和中级职称比,你觉得哪个薪资待遇更高? 那几个银行信用卡好办,额度高,本人有车 按了ppt中文件菜单,怎么找不到导出功能呢- 问一问 我的PPT没有导入导出选项- 问一问 事业副科和中级职称哪个工资高?哪个发展会好一些? 有车办什么银行信用卡额度比较高 事业正科比公务员副科工资多多少? 淮北农商银行朝阳支行大额支付行号 学历不高名下有一台小车,不知道办哪个银行信用卡好? 客服,opporeno十倍变焦版的nfc做地铁怎么使用 mac ppt无法导出jpeg格式 事业副科和中级职称,哪个岗位的待遇会更好一些? 在苹果笔记本电脑上做ppt的时候,点击“文件”里面没有导出为power point这个选项 事业单位管理人员,职务副科级,为什么可执行6级岗位工资标准? 为什么我电脑上ppt没有输出视频 事业单位管理岗位的薪级是多少级 OPPO Reno 10倍变焦版如何查看使用说明 鼠标垫要买什么材质的?厚点的好还是表面滑一点的好还是……?