mirror of https://github.com/pwndbg/pwndbg.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
6.4 KiB
6.4 KiB
GDB vs LLDB
For users who are migrating from one debugger to another, here is a table comparison of some of the most common actions and how to do them in GDB and LLDB. Note that both debuggers offer shorthands for typing these commands.
| Functionality | GDB Command | LLDB Command |
|---|---|---|
| Start Debugging Program | gdb ./your-program |
lldb ./your-program |
| Set a Breakpoint | break <function-name> |
breakpoint set --name <function-name> |
| Set Breakpoint on Address | break *<address> |
breakpoint set --address <address> |
| Set Breakpoint at Line | break <filename>:<line-number> |
breakpoint set --file <filename> --line <line-number> |
| Set Hardware Breakpoint | hbreak <function-name> |
breakpoint set --hardware --name <function-name> |
| Set Hardware Breakpoint at Memory | hbreak *<memory-address> |
breakpoint set --hardware --address <memory-address> |
| List All Breakpoints | info breakpoints |
breakpoint list |
| Delete Breakpoints | delete <breakpoint-number> |
breakpoint delete <breakpoint-number> |
| Set Watchpoint | watch <variable> |
watchpoint set variable <variable> |
| Set Conditional Breakpoint | break <function-name> if <condition> |
breakpoint set --condition "<condition>" |
| Continue Execution | continue |
process continue |
| Next Instruction | next |
thread step-over |
| Step into a Function | step |
thread step-in |
| Step out of a Function | finish |
thread step-out |
| Print Threads | info threads |
thread list |
| Select Thread | thread <thread-id> |
thread select <thread-id> |
| Print Register Values | info registers |
register read -a |
| Print a Variable | print <variable> |
print <variable> |
| Display Variable on Every Stop | display <variable> |
expression --watch <variable> |
| Examine Memory (Hex) | x/<num>x <memory-address> |
memory read --format x --count <num> <memory-address> |
| Examine Memory (Integer) | x/<num>d <memory-address> |
memory read --format d --count <num> <memory-address> |
| Inspect Stack Trace | backtrace |
thread backtrace |
| Change Register Value | set $<register-name> = <value> |
register write <register-name> <value> |
| Check Program Status | info locals |
frame variable |
| Check Program Info | info functions |
image lookup --functions |
| Show Disassembly of Function | disas <function-name> |
disassemble <function-name> |
| Memory Dump (Hex) | x/<num>xh <memory-address> |
memory read --format x --count <num> <memory-address> |
| Memory Dump (Bytes) | x/<num>bx <memory-address> |
memory read --format b --count <num> <memory-address> |
| Show Process Information | info process |
process status |
| Quit Debugging | quit |
quit |
| Run Program with Arguments | run <arg1> <arg2> ... |
process launch -- <arg1> <arg2> ... |
| Show Current Function | info frame |
frame info |
| Set Sysroot | set sysroot <path-to-sysroot> |
settings set target.sysroot <path-to-sysroot> |
| Set Source Directory | directory <path-to-source-directory> |
settings set target.source-map <remote-path> <local-path> |
| Set Architecture | set architecture <arch> |
target create --arch <arch> <executable-file> |
| Show Settings | show <setting-name> |
settings show <setting-name> |
| Set File for Debugging | file <executable-file> |
target create <executable-file> |
| Start the Program at the First Instruction | starti |
process launch --stop-at-entry |
| Enable ASLR | set disable-randomization off |
settings set target.disable-aslr false |