LLDB TO GDB COMMAND MAP LLDB TO GDB COMMAND MAP[转]

简介:

LLDB TO GDB COMMAND MAP

Below is a table of LLDB commands with the GDB counterparts. The built in GDB compatability aliases in GDB are also listed.


EXECUTION COMMANDS


LLDB

GDB

Launch a process no arguments.

(lldb) process launch

(lldb) run

(lldb) r

(gdb) run

(gdb) r

Launch a process with arguments <args>.

(lldb) process launch -- <args>

(lldb) r <args>

(gdb) run <args>

(gdb) r <args>

Launch a process for with arguments a.out 1 2 3 without having to supply the args every time.

% lldb -- a.out 1 2 3

(lldb) run

...

(lldb) run

...

% gdb --args a.out 1 2 3

(gdb) run

...

(gdb) run

...

Launch a process with arguments in new terminal window (Mac OS X only).

(lldb) process launch --tty -- <args>

(lldb) pro la -t -- <args>


Launch a process with arguments in existing terminal /dev/ttys006 (Mac OS X only).

(lldb) process launch --tty=/dev/ttys006 -- <args>

(lldb) pro la -t/dev/ttys006 -- <args>


Attach to a process with process ID 123.

(lldb) process attach --pid 123

(lldb) attach -p 123

(gdb) attach 123

Attach to a process named "a.out".

(lldb) process attach --name a.out

(lldb) pro at -n a.out

(gdb) attach a.out

Wait for a process named "a.out" to launch and attach.

(lldb) process attach --name a.out --waitfor

(lldb) pro at -n a.out -w

(gdb) attach -waitfor a.out

Do a source level single step in the currently selected thread.

(lldb) thread step-in

(lldb) step

(lldb) s

(gdb) step

(gdb) s

Do a source level single step over in the currently selected thread.

(lldb) thread step-over

(lldb) next

(lldb) n

(gdb) next

(gdb) n

Do an instruction level single step in the currently selected thread.

(lldb) thread step-inst

(lldb) si

(gdb) stepi

(gdb) si

Do an instruction level single step over in the currently selected thread.

(lldb) thread step-inst-over

(lldb) ni

(gdb) nexti

(gdb) ni

Step out of the currently selected frame.

(lldb) thread step-out

(lldb) finish

(gdb) finish

Backtrace and disassemble every time you stop.

(lldb) target stop-hook add

Enter your stop hook command(s). Type 'DONE' to end.

> bt

> disassemble --pc

> DONE

Stop hook #1 added.



BREAKPOINT COMMANDS


LLDB

GDB

Set a breakpoint at all functions named main.

(lldb) breakpoint set --name main

(lldb) br s -n main

(lldb) b main

(gdb) break main

Set a breakpoint in file test.c at line 12.

(lldb) breakpoint set --file test.c --line 12

(lldb) br s -f test.c -l 12

(lldb) b test.c:12

(gdb) break test.c:12

Set a breakpoint at all C++ methods whose basename is main.

(lldb) breakpoint set --method main

(lldb) br s -M main

(gdb) break main

(Hope that there are no C funtions named main).

Set a breakpoint at and object C function: -[NSString stringWithFormat:].

(lldb) breakpoint set --name "-[NSString stringWithFormat:]"

(lldb) b -[NSString stringWithFormat:]

(gdb) break -[NSString stringWithFormat:]

Set a breakpoint at all Objective C methods whose selector is count.

(lldb) breakpoint set --selector count

(lldb) br s -S count

(gdb) break count

(Hope that there are no C or C++ funtions named count).

List all breakpoints.

(lldb) breakpoint list

(lldb) br l

(gdb) info break

Delete a breakpoint.

(lldb) breakpoint delete 1

(lldb) br del 1

(gdb) delete 1



EXAMINING VARIABLES


LLDB

GDB

Show the arguments and local variables for the current frame.

(lldb) frame variable

(gdb) info args

and

(gdb) info locals

Show the local variables for the current frame.

(lldb) frame variable --no-args

(lldb) fr v -a

(gdb) info locals

Show the contents of local variable "bar".

(lldb) frame variable bar 

(lldb) fr v bar 

(lldb) p bar 

(gdb) p bar

Show the contents of local variable "bar" formatted as hex.

(lldb) frame variable --format x bar 

(lldb) fr v -f x bar 

(gdb) p/x bar

Show the contents of global variable "baz".

(lldb) target variable baz 

(lldb) ta v baz 

(gdb) p baz

Show the global/static variables defined in the current source file.

(lldb) target variable 

(lldb) ta v 

n/a

Display a the variable "argc" and "argv" every time you stop.

(lldb) target stop-hook add --one-liner "frame variable argc argv"

(lldb) ta st a -o "fr v argc argv"

(lldb) display argc

(lldb) display argv

(gdb) display argc

(gdb) display argv

Display a the variable "argc" and "argv" only when you stop in the function named main.

(lldb) target stop-hook add --name main --one-liner "frame variable argc argv"

(lldb) ta st a -n main -o "fr v argc argv"

Display the variable "*this" only when you stop in c class named MyClass.

(lldb) target stop-hook add --classname MyClass --one-liner "frame variable *this"

(lldb) ta st a -c MyClass -o "fr v *this"


EXAMINING THREAD STATE


LLDB

GDB

Show the stack backtrace for the current thread.

(lldb) thread backtrace

(lldb) bt

(gdb) bt

Show the stack backtraces for all threads.

(lldb) thread backtrace all

(lldb) bt all

(gdb) thread apply all bt

Select a different stack frame by index for the current thread.

(lldb) frame select 12

(gdb) frame 12

Select the stack frame that called the current stack frame.

(lldb) up

(lldb) frame select --relative=1

(gdb) up

Select the stack frame that is called by the current stack frame.

(lldb) down

(lldb) frame select --relative=-1

(lldb) fr s -r-1

(gdb) down

Select a different stack frame using a relative offset.

(lldb) frame select --relative 2

(lldb) fr s -r2


(lldb) frame select --relative -3

(lldb) fr s -r-3

(gdb) up 2

(gdb) down 3

Show the general purpose registers for the current thread.

(lldb) register read

(gdb) info registers

Show the general purpose registers for the current thread formatted as signed decimal. LLDB tries to use the same format characters as printf(3) when possible. Type "help format" to see the full list of format specifiers.

(lldb) register read --format i

(lldb) re r -f i


LLDB now supports the GDB shorthand format syntax but there can't be space after the command:

(lldb) register read/d


Show all registers in all register sets for the current thread.

(lldb) register read --all

(lldb) re r -a

(gdb) info all-registers

Show the values for the registers named "rax", "rsp" and "rbp" in the current thread.

(lldb) register read rax rsp rbp

(gdb) info all-registers rax rsp rbp

Show the values for the register named "rax" in the current thread formatted as binary.

(lldb) register read --format binary rax

(lldb) re r -f b rax


LLDB now supports the GDB shorthand format syntax but there can't be space after the command:

(lldb) register read/t rax

(lldb) p/t $rax

(gdb) p/t $rax

Read memory from address 0xbffff3c0 and show 4 hex uint32_t values.

(lldb) memory read --size 4 --format x --count 4 0xbffff3c0

(lldb) me r -s4 -fx -c4 0xbffff3c0

(lldb) x -s4 -fx -c4 0xbffff3c0


LLDB now supports the GDB shorthand format syntax but there can't be space after the command:

(lldb) memory read/4xw 0xbffff3c0

(lldb) x/4xw 0xbffff3c0

(lldb) memory read --gdb-format 4xw 0xbffff3c0

(gdb) x/4xw 0xbffff3c0

Read memory starting at the expression "argv[0]".

(lldb) memory read `argv[0]`

NOTE: any command can inline a scalar expression result (as long as the target is stopped) using backticks around any expression:

(lldb) memory read --size `sizeof(int)` `argv[0]`

(gdb) x argv[0]

Read 512 bytes of memory from address 0xbffff3c0 and save results to a local file as text.

(lldb) memory read --outfile /tmp/mem.txt --count 512 0xbffff3c0

(lldb) me r -o/tmp/mem.txt -c512 0xbffff3c0

(lldb) x/512bx -o/tmp/mem.txt 0xbffff3c0

(gdb) set logging on

(gdb) set logging file /tmp/mem.txt

(gdb) x/512bx 0xbffff3c0

(gdb) set logging off

Save binary memory data starting at 0x1000 and ending at 0x2000 to a file.

(lldb) memory read --outfile /tmp/mem.bin --binary 0x1000 0x1200

(lldb) me r -o /tmp/mem.bin -b 0x1000 0x1200

Disassemble the current function for the current frame.

(lldb) disassemble --frame

(lldb) di -f

(gdb) disassemble

Disassemble any functions named main.

(lldb) disassemble --name main

(lldb) di -n main

(gdb) disassemble main

Disassemble an address range.

(lldb) disassemble --start-address 0x1eb8 --end-address 0x1ec3

(lldb) di -s 0x1eb8 -e 0x1ec3

(gdb) disassemble 0x1eb8 0x1ec3

Disassemble 20 instructions from a given address.

(lldb) disassemble --start-address 0x1eb8 --count 20

(lldb) di -s 0x1eb8 -c 20

(gdb) x/20i 0x1eb8

Show mixed source and disassembly for the current function for the current frame.

(lldb) disassemble --frame --mixed

(lldb) di -f -m

n/a

Disassemble the current function for the current frame and show the opcode bytes.

(lldb) disassemble --frame --bytes

(lldb) di -f -b

n/a

Disassemble the current source line for the current frame.

(lldb) disassemble --line

(lldb) di -l

n/a



EXECUTABLE AND SHARED LIBRARY QUERY COMMANDS


LLDB

GDB

List the main executable and all dependent shared libraries.

(lldb) image list

(gdb) info shared

Lookup information for a raw address in the executable or any shared libraries.

(lldb) image lookup --address 0x1ec4

(lldb) im loo -a 0x1ec4

(gdb) info symbol 0x1ec4

Lookup information for an address in a.out only.

(lldb) image lookup --address 0x1ec4 a.out

(lldb) im loo -a 0x1ec4 a.out


Lookup information for for a type Point by name.

(lldb) image lookup --type Point

(lldb) im loo -t Point

(lldb) ptype Point

Dump all sections from the main executable and any shared libraries.

(lldb) image dump sections

(gdb) maintenance info sections

Dump all sections in the a.out module.

(lldb) image dump sections a.out


Dump all symbols from the main executable and any shared libraries.

(lldb) image dump symtab


Dump all symbols in a.out and liba.so.

(lldb) image dump symtab a.out liba.so


欢迎加群互相学习,共同进步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,转载请注明出处!















本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/sunshine-anycall/archive/2012/02/19/2357801.html ,如需转载请自行联系原作者


相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
7月前
|
NoSQL C语言
vscode出现 ERROR: Unable to start debugging. Unexpected GDB output from command “-exec-run“.
vscode出现 ERROR: Unable to start debugging. Unexpected GDB output from command “-exec-run“.
1497 0
|
NoSQL Shell C++
GDB扩展之Command File - 提高调试效率
工欲善其事,必先利其器。GDB的扩展可以通过command file和python脚本完成,这里针对Command file,一个简单高效的扩展方案。
1384 0
|
7月前
|
NoSQL 搜索推荐 openCL
【C/C++ 调试 GDB指南 】gdb调试基本操作
【C/C++ 调试 GDB指南 】gdb调试基本操作
393 2
|
7月前
|
NoSQL Linux 开发工具
【深入解析git和gdb:版本控制与调试利器的终极指南】(下)
【深入解析git和gdb:版本控制与调试利器的终极指南】
|
4月前
|
NoSQL Linux C语言
Linux GDB 调试
Linux GDB 调试
65 10
|
4月前
|
NoSQL Linux C语言
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
104 3
|
4月前
|
NoSQL
技术分享:如何使用GDB调试不带调试信息的可执行程序
【8月更文挑战第27天】在软件开发和调试过程中,我们有时会遇到需要调试没有调试信息的可执行程序的情况。这可能是由于程序在编译时没有加入调试信息,或者调试信息被剥离了。然而,即使面对这样的挑战,GDB(GNU Debugger)仍然提供了一些方法和技术来帮助我们进行调试。以下将详细介绍如何使用GDB调试不带调试信息的可执行程序。
108 0
|
6月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
45 1
|
6月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
33 0
|
6月前
|
NoSQL Linux C++
Linux C/C++ gdb调试正在运行的程序
Linux C/C++ gdb调试正在运行的程序