美文网首页
LLDB命令集合

LLDB命令集合

作者: Sunooo | 来源:发表于2023-04-01 17:31 被阅读0次

在iOS开发中常用的LLDB命令:

LLDB(Low-Level Debugger)是一个用于调试程序的开源软件。在iOS开发中,LLDB主要与Xcode集成,用于调试Objective-C和Swift编写的应用程序。LLDB能帮助开发者找出程序中的错误、分析程序运行情况以及探究程序内部状态。

使用LLDB,您可以:

设置断点:在程序的特定行停止执行,以便您可以查看该时刻的状态。
单步执行:一行一行地执行代码,以更好地理解程序的执行过程。
查看变量值:查看程序中各种变量和数据结构的值。
修改变量值:在调试过程中动态更改变量值,以测试不同的条件和情况。
执行表达式:在调试会话中执行代码,以便检查和验证程序行为。
调用堆栈跟踪:查看函数调用堆栈,以了解当前执行上下文。
LLDB提供了丰富的命令行接口,使开发者可以在调试会话中输入命令。同时,Xcode也为LLDB提供了图形界面,使调试更加直观。了解LLDB的基本用法和常用命令可以帮助您更有效地找出和解决程序中的问题。

breakpoint set (缩写:br s): 设置断点。例如,breakpoint set --line 25 在第25行设置一个断点。

breakpoint list (缩写:br l): 显示已设置的所有断点。

breakpoint delete (缩写:br d): 删除一个或多个断点。例如,breakpoint delete 1 删除编号为1的断点。

breakpoint enable/disable (缩写:br en/dis): 启用或禁用一个或多个断点。

continue (缩写:c`): 从当前位置继续执行程序,直到遇到下一个断点或程序结束。

step (缩写:s`): 单步执行一行代码。如果遇到函数调用,会进入该函数。

next (缩写:n`): 单步执行一行代码。如果遇到函数调用,会跳过该函数。

finish (缩写:f): 从当前函数中返回,继续执行上一级函数。

thread backtrace (缩写:bt): 显示当前线程的调用堆栈。

frame variable (缩写:fr v): 显示当前堆栈帧的所有变量和参数。

expression (缩写:expr): 执行一个表达式。可以用于查看、修改变量值,或执行任意代码。例如,expression myVariable = 5

po: 打印对象的描述。与expression类似,但适用于Objective-CSwift对象。例如,po myArray

run (缩写:r): 重新启动并运行程序。如果有设置启动参数,可以在此命令后添加。

thread list (缩写:th l): 列出当前进程中的所有线程。

thread select (缩写:th s): 选择一个指定线程。例如,thread select 2 会切换到编号为2的线程。

frame select (缩写:fr s): 选择一个指定的堆栈帧。例如,frame select 1 会切换到编号为1的堆栈帧。

frame info (缩写:fr i): 显示当前堆栈帧的信息。

image list (缩写:im li): 显示程序中的所有加载的二进制映像(包括应用程序本身、系统框架和库)。

breakpoint set --name (缩写:br s -n): 根据函数名或方法名设置断点。例如,breakpoint set --name viewDidLoad 会在所有的viewDidLoad方法处设置断点。

breakpoint set --selector (缩写:br s -S): 根据Objective-C方法选择器设置断点。例如,breakpoint set --selector viewDidLoad

breakpoint set --source-regex (缩写:br s -p): 使用正则表达式匹配源代码行来设置断点。例如,breakpoint set --source-regex 'myFunction()'

watchpoint set variable (缩写:w s v): 设置一个观察点,以便在指定变量值发生更改时中断程序。例如,watchpoint set variable myVariable。

watchpoint list (缩写:w l): 列出已设置的观察点。

watchpoint delete (缩写:w d): 删除一个或多个观察点。例如,watchpoint delete 1

settings show: 显示LLDB当前的配置设置。

settings set: 修改LLDB的配置设置。例如,settings set target.language swift 将目标语言设置为Swift

register read: 读取并显示处理器寄存器的值。

register write: 修改处理器寄存器的值。例如,register write rax 0x100 将寄存器RAX的值设置为0x100

memory read (缩写:me r): 读取并显示内存中的数据。例如,memory read 0x100000

memory write (缩写:me w): 将数据写入内存。例如,memory write 0x100000 0x42

disassemble (缩写:di): 反汇编当前函数或指定地址的机器代码。

breakpoint command add: 为特定断点添加一个或多个自定义命令。当断点被触发时,这些命令将自动执行。例如,breakpoint command add 1 -o "expr myVariable = 5"

breakpoint set --file (缩写:br s -f): 在指定文件的特定行设置断点。例如,breakpoint set --file main.swift --line 25

breakpoint set --symbol (缩写:br s -s): 根据符号名设置断点。例如,breakpoint set --symbol myFunction

breakpoint set --address (缩写:br s -a): 根据内存地址设置断点。例如,breakpoint set --address 0x100000

breakpoint modify: 修改已设置断点的属性。例如,breakpoint modify --ignore-count 5 1 忽略编号为1的断点的前5次触发。

target create: 创建一个新的调试目标。例如,target create myExecutable

target list: 显示所有调试目标。

target select: 选择一个特定的调试目标。例如,target select 1

target modules search-paths add: 添加模块搜索路径。例如,target modules search-paths add /path/to/libs

breakpoint set --source-pattern-regexp: 使用正则表达式匹配源代码行来设置断点。例如,breakpoint set --source-pattern-regexp 'myFunction()'

breakpoint set --fullname: 根据完整的文件名和行号设置断点。例如,breakpoint set --fullname /path/to/file/main.swift:25

thread until (缩写:th u): 在当前线程中执行指令,直到指定的行号。例如,thread until 25

thread jump (缩写:th j): 在当前线程中跳过指定的行数。例如,thread jump --by 2

process load/unload: 加载或卸载动态库。例如,process load /path/to/libMyLibrary.dylib

process signal: 向当前进程发送信号。例如,process signal SIGINT

process save-core: 保存当前进程的核心转储。例如,process save-core /path/to/dump/core.dump

type summary add: 为自定义类型添加摘要。例如,type summary add --summary-string "x = ${var.x}, y = ${var.y}" MyPoint
breakpoint set --one-shot (缩写:br s -o): 设置一次性断点。该断点在触发一次后自动删除。例如,breakpoint set --one-shot --line 25

expression --top-level: 在顶层上下文中执行表达式,而不是当前堆栈帧。例如,expression --top-level -- myGlobalVariable = 42

type format add: 为类型添加自定义格式。例如,type format add --format hex MyIntegerType

type lookup: 查找指定类型的信息。例如,type lookup MyCustomClass

type category enable/disable: 启用或禁用特定类型的分类。例如,type category enable myCategory

source list: 列出当前堆栈帧所在源文件的源代码。

source info: 显示当前堆栈帧所在源文件的信息。

alias: 为常用的LLDB命令创建别名。例如,alias b breakpoint set

unalias: 删除之前创建的别名。例如,unalias b

settings append: 向配置设置添加一个值。例如,settings append target.source-map /old/path /new/path

settings replace: 替换配置设置中的一个值。例如,settings replace target.source-map /old/path /new/path

settings remove: 删除配置设置中的一个值。例如,settings remove target.source-map /old/path

相关文章

  • 强大的调试神器Chisel

    什么是Chisel Chisel是facebook开源的一个LLDB命令的集合,它里面简化和扩展了LLDB的命令。...

  • LLDB 使用

    LLDB 使用 LLDB(Low Lever Debug)命令结构 其中: (命令)和 (子命令):LLDB调试命...

  • LLDB使用总结

    简略命令请点击LLDB命令总结 安装命令集合工具 1、Chisel安装教程常见问题: 解决方案的链接2、Derek...

  • iOS LLDB调试

    掌握以下lldb命令,够用. ### LLDB调试总结 eNSString*$str=@"test"...

  • GDB 与 LLDB 命令对照表,非常棒

    GDB与LLDB命令对照表 GDB 与 LLDB 命令对照表1GDB 与 LLDB 命令对照表2 设置观察点 观察...

  • iOS逆向006--LLDB(Low Lever Debug)

    Debug 命令 LLDB:Low Lever Debug( 轻量级Debug) (lldb)//--------...

  • LLDB集合

    LLDB断点调试命令,在一些情况下还是很好用的,毕竟有时候你需要知道某个或者多个属性是否有值的时候,让你去写一个N...

  • LLDB扩展库chisel

    lldb最基本的命令help 可以查看所有lldb命令,通过help command 可以查看该命令的作用和使用s...

  • LLDB 调试工具Chisel兼容Xcode11

    Chisel是Facebook出品的(一个灰常强大的)LLDB命令的集合,用于帮助调试iOS应用程序 在Xcode...

  • LLDB 调试工具Chisel 不支持Python2的解决方法

    Chisel是Facebook出品的(一个灰常强大的)LLDB命令的集合,用于帮助调试iOS应用程序 在Xcode...

网友评论

      本文标题:LLDB命令集合

      本文链接:https://www.haomeiwen.com/subject/kqlvrdtx.html