aboutsummaryrefslogtreecommitdiff
path: root/tools/lldb-mi/MIExtensions.txt
blob: 966cb2f074c9db4b62bb36eca0691b45ee8147c6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# -file-exec-and-symbols now takes two new (optional) options:

Synopsis

	-file-exec-and-symbols <file> [-p <platform>] [-r <remote-file>]

Specify the executable file to be debugged. This file is the one from which the symbol table is also read. 
When debugging remote targets specify a remote-file for execution and a file from which symbols are read. 
The optional platform is the name of the platform, e.g., "remote-ios" or "ios-simulator". The remote-file 
is the on-device path to the exe.

# -data-info-line

Synopsis

	-data-info-line *<address>
	-data-info-line <file>:<line>

Provides information about a source line. The input can be <address> like 0x12345678 or <file>:<line>
where file is a name of source file and line is the line number. As a result the command returns the following
fields:
    start - address of the first instruction which refers to that source line
    end - address of the last instruction which refers to that source line
    file - the file name
    line - the line number
The last two fields are useful in case you have specified a source line using its address.

Example:
    -data-info-line *0x100000f80
    ^done,start="0x0000000100000f80",end="0x0000000100000f94",file="/Users/IliaK/p/hello.cpp",line="15"

    -data-info-line hello.cpp:15
    ^done,start="0x0000000100000f80",end="0x0000000100000f94",file="/Users/IliaK/p/hello.cpp",line="15"

# -data-read-memory-bytes

Synopsis

	-data-read-memory-bytes [--thread <thread-id>] [--frame <frame-index>] [-o <byte-offset>] <address> <count>

Where:

	`address`
		An expression specifying the start of the memory range to read.
	`count`
		Number of bytes to read.
	`byte-offset`
		Relative offset in bytes from `address` where reading should start.
	`thread-id`
		Integer identifier of the thread within which the expression should be evaluated,
		if this option is omitted the currently selected thread will be used.
		This option is not in the MI specification but is implemented by GDB.
	`frame-index`
		Index of the frame within which the expression should be evaluated,
		if this option is omitted the currently selected frame will be used.
		This option is not in the MI specification but is implemented by GDB.

Reads a block of memory from the specified range.

Note that currently this command works in an all-or-nothing fashion where it either reads the entire
block of memory successfully and returns it as a single block, or it returns an error. This doesn't
quite match up with the MI specification that says that subsets of the specified range may be
returned as individual blocks if only some of the memory within the specified range is accessible.

The result record for this command may contain one or more tuples representing the blocks of memory
that were read, where each tuple has the following fields:

	`begin`
		The start of the address range for this block (in hex notation).
	`end`
		The end of the address range for this block (in hex notation).
	`offset`
		Offset of this block from `address` (that was passed in as an argument).
	`contents`
		The actual data in this block (in hex notation).

Example:

	(gdb)
	-data-read-memory-bytes &array 4
	^done,memory=[{begin="0x00007fffffffeccc",offset="0x0000000000000000",end="0x00007fffffffecd0",contents="01020304"}]
	(gdb)

# =library-loaded notification

The =library-loaded notification has 3 extra fields:
    symbols-loaded - indicates that there are symbols for the loaded library
    symbols-path   - if symbols are exist then it contains a path for symbols of the loaded library
    loaded_addr    - contains an address of the loaded library or "-" if address isn't resolved yet

For example:
    =library-loaded,id="/Users/IliaK/p/hello",target-name="/Users/IliaK/p/hello",host-name="/Users/IliaK/p/hello",symbols-loaded="1",symbols-path="/Users/IliaK/p/hello.dSYM/Contents/Resources/DWARF/hello",loaded_addr="-"
    =library-loaded,id="/usr/lib/dyld",target-name="/usr/lib/dyld",host-name="/usr/lib/dyld",symbols-loaded="0",loaded_addr="0x00007fff5fc00000"

# -target-attach

Synopsis

Additional syntax provided by lldb-mi:
	-target-attach -n <executable-name> [--waitfor]

Attach to an executable. Using -n allows specifying an executable name to attach to. 
Using this with --watifor can do a deffered attach. The flags -n and --waitfor match the syntax of lldb proper's 'process attach' command.