- 1. 概要
- 2. ここでの話
- 3. 起動・終了
1. 概要
世の中は「GCC」から「Clang」へ向かっているようで・・・。
Clang は「LLVM」の言語で、LLVM のデバッグ環境は LLDB なのです。
以下のサイトを参考にさせていただきました。
「LLDBを使ってCのデバッグをする」
2. ここでの話
わたしが普段使っている環境は
OS FreeBSD 10.3 RELEASE i386
コンパイラ Clang 3.4.1
なのですが、これには、LLDB もインストールしています。
というか、何かの依存でしょうか?いつの間にかインストールされていたというのが正直な話ですが。
lldb39 と lldb40 の2つのバージョンがはいっていました。
細かく述べると
> lldb39 --version
lldb version 3.9.1 ( revision )
> lldb40 --version
lldb version 4.0.1
とりあえず、lldb40 の方を使ってみようと思います。なので .cshrc にちょっと細工
alias lldb lldb40
3. 起動・終了
デバッガにそこまでの違いはないようです。起動して、ヘルプを表示して、終了してみます。
> lldb デバッグ対象のプログラム名
(lldb) target create "プログラム名"
(lldb) h ← ヘルプの表示
(lldb) q ← 終了(quit の略)
実際にやってみるとこうなります。
> lldb curses ← たまたまこういうプログラムをデバッグしていた
(lldb) target create "curses"
Current executable set to 'curses' (i386).
(lldb) h
Debugger commands:
apropos -- List debugger commands related to a word or subject.
breakpoint -- Commands for operating on breakpoints (see 'help b' for shorthand.)
bugreport -- Commands for creating domain-specific bug reports.
command -- Commands for managing custom LLDB commands.
disassemble -- Disassemble specified instructions in the current target. Defaults to the current function for the
current thread and stack frame.
expression -- Evaluate an expression on the current thread. Displays any returned value with LLDB's default formatting.
frame -- Commands for selecting and examing the current thread's stack frames.
gdb-remote -- Connect to a process via remote GDB server. If no host is specifed, localhost is assumed.
gui -- Switch into the curses based GUI mode.
help -- Show a list of all debugger commands, or give details about a specific command.
kdp-remote -- Connect to a process via remote KDP server. If no UDP port is specified, port 41139 is assumed.
language -- Commands specific to a source language.
log -- Commands controlling LLDB internal logging.
memory -- Commands for operating on memory in the current target process.
platform -- Commands to manage and create platforms.
plugin -- Commands for managing LLDB plugins.
process -- Commands for interacting with processes on the current platform.
quit -- Quit the LLDB debugger.
register -- Commands to access registers for the current thread and stack frame.
script -- Invoke the script interpreter with provided code and display any results. Start the interactive
interpreter if no code is supplied.
settings -- Commands for managing LLDB settings.
source -- Commands for examining source code described by debug information for the current target process.
target -- Commands for operating on debugger targets.
thread -- Commands for operating on one or more threads in the current process.
type -- Commands for operating on the type system.
version -- Show the LLDB debugger version.
watchpoint -- Commands for operating on watchpoints.
Current command abbreviations (type 'help command alias' for more info):
add-dsym -- Add a debug symbol file to one of the target's current modules by specifying a path to a debug symbols file, or
using the options to specify a module to download symbols for.
attach -- Attach to process by ID or name.
b -- Set a breakpoint using one of several shorthand formats.
bt -- Show the current thread's call stack. Any numeric argument displays at most that many frames. The argument 'all'
displays all threads.
c -- Continue execution of all threads in the current process.
call -- Evaluate an expression on the current thread. Displays any returned value with LLDB's default formatting.
continue -- Continue execution of all threads in the current process.
detach -- Detach from the current target process.
di -- Disassemble specified instructions in the current target. Defaults to the current function for the current thread
and stack frame.
dis -- Disassemble specified instructions in the current target. Defaults to the current function for the current thread
and stack frame.
display -- Evaluate an expression at every stop (see 'help target stop-hook'.)
down -- Select a newer stack frame. Defaults to moving one frame, a numeric argument can specify an arbitrary number.
env -- Shorthand for viewing and setting environment variables.
exit -- Quit the LLDB debugger.
f -- Select the current stack frame by index from within the current thread (see 'thread backtrace'.)
file -- Create a target using the argument as the main executable.
finish -- Finish executing the current stack frame and stop after returning. Defaults to current thread unless specified.
image -- Commands for accessing information for one or more target modules.
j -- Set the program counter to a new address.
jump -- Set the program counter to a new address.
kill -- Terminate the current target process.
l -- List relevant source code using one of several shorthand formats.
list -- List relevant source code using one of several shorthand formats.
n -- Source level single step, stepping over calls. Defaults to current thread unless specified.
next -- Source level single step, stepping over calls. Defaults to current thread unless specified.
nexti -- Instruction level single step, stepping over calls. Defaults to current thread unless specified.
ni -- Instruction level single step, stepping over calls. Defaults to current thread unless specified.
p -- Evaluate an expression on the current thread. Displays any returned value with LLDB's default formatting.
parray -- Evaluate an expression on the current thread. Displays any returned value with LLDB's default formatting.
po -- Evaluate an expression on the current thread. Displays any returned value with formatting controlled by the
type's author.
poarray -- Evaluate an expression on the current thread. Displays any returned value with LLDB's default formatting.
print -- Evaluate an expression on the current thread. Displays any returned value with LLDB's default formatting.
q -- Quit the LLDB debugger.
r -- Launch the executable in the debugger.
rbreak -- Sets a breakpoint or set of breakpoints in the executable.
run -- Launch the executable in the debugger.
s -- Source level single step, stepping into calls. Defaults to current thread unless specified.
si -- Instruction level single step, stepping into calls. Defaults to current thread unless specified.
sif -- Step through the current block, stopping if you step directly into a function whose name matches the
TargetFunctionName.
step -- Source level single step, stepping into calls. Defaults to current thread unless specified.
stepi -- Instruction level single step, stepping into calls. Defaults to current thread unless specified.
t -- Change the currently selected thread.
tbreak -- Set a one-shot breakpoint using one of several shorthand formats.
undisplay -- Stop displaying expression at every stop (specified by stop-hook index.)
up -- Select an older stack frame. Defaults to moving one frame, a numeric argument can specify an arbitrary number.
x -- Read from the memory of the current target process.
For more information on any command, type 'help <command-name>'.
(lldb) q
|