1 This import module uses a largely text-based protocol, except for |
|
2 certain bulk data transfer operations. All text is in single-byte |
|
3 US-ASCII. |
|
4 |
|
5 Commands understood: |
|
6 |
|
7 address_size ::= <int result> |
|
8 |
|
9 Returns 32 if attached to 32-bit process, 64 if 64-bit. |
|
10 |
|
11 peek_fail_fast <bool arg> ::= |
|
12 |
|
13 Indicates whether "peek" requests should "fail fast"; that is, if |
|
14 any of the addresses in the requested range are unmapped, report |
|
15 the entire range as unmapped. This is substantially faster than |
|
16 the alternative, which is to read the entire range byte-by-byte. |
|
17 However, it should only be used when it is guaranteed by the |
|
18 client application that peeks come from at most one page. The |
|
19 default is that peek_fast_fail is not enabled. |
|
20 |
|
21 peek <address addr> <unsigned int numBytes> ::= |
|
22 B<binary char success> |
|
23 [<binary unsigned int len> <binary char isMapped> [<binary char data>]...]... |
|
24 |
|
25 NOTE that the binary portion of this message is prefixed by the |
|
26 uppercase US-ASCII letter 'B', allowing easier synchronization by |
|
27 clients. There is no data between the 'B' and the rest of the |
|
28 message. |
|
29 |
|
30 May only be called once attached. Reads the address space of the |
|
31 target process starting at the given address (see below for format |
|
32 specifications) and extending the given number of bytes. Whether |
|
33 the read succeeded is indicated by a single byte containing a 1 or |
|
34 0 (success or failure). If successful, the return result is given |
|
35 in a sequence of ranges. _len_, the length of each range, is |
|
36 indicated by a 32-bit unsigned integer transmitted with big-endian |
|
37 byte ordering (i.e., most significant byte first). _isMapped_ |
|
38 indicates whether the range is mapped or unmapped in the target |
|
39 process's address space, and will contain the value 1 or 0 for |
|
40 mapped or unmapped, respectively. If the range is mapped, |
|
41 _isMapped_ is followed by _data_, containing the raw binary data |
|
42 for the range. The sum of all ranges' lengths is guaranteed to be |
|
43 equivalent to the number of bytes requested. |
|
44 |
|
45 poke <address addr> <int numBytes> B[<binary char data>]... ::= <bool result> |
|
46 |
|
47 NOTE that the binary portion of this message is prefixed by the |
|
48 uppercase US-ASCII letter 'B', allowing easier synchronization by |
|
49 clients. There is no data between the 'B' and the rest of the |
|
50 message. |
|
51 |
|
52 Writes the given data to the target process starting at the given |
|
53 address. Returns 1 on success, 0 on failure (i.e., one or more of |
|
54 target addresses were unmapped). |
|
55 |
|
56 mapped <address addr> <int numBytes> ::= <bool result> |
|
57 |
|
58 Returns 1 if entire address range [address...address + int arg) is |
|
59 mapped in target process's address space, 0 if not |
|
60 |
|
61 lookup <symbol objName> <symbol sym> ::= <address addr> |
|
62 |
|
63 First symbol is object name; second is symbol to be looked up. |
|
64 Looks up symbol in target process's symbol table and returns |
|
65 address. Returns NULL (0x0) if symbol is not found. |
|
66 |
|
67 thr_gregs <int tid> ::= <int numAddresses> <address...> |
|
68 |
|
69 Fetch the "general" (integer) register set for the given thread. |
|
70 Returned as a series of hexidecimal values. NOTE: the meaning of |
|
71 the return value is architecture-dependent. In general it is the |
|
72 contents of the prgregset_t. |
|
73 |
|
74 exit ::= |
|
75 |
|
76 Exits the serviceability agent dbx module, returning control to |
|
77 the dbx prompt. |
|
78 |
|
79 // Data formats and example values: |
|
80 <address> ::= 0x12345678[9ABCDEF0] /* up to 64-bit hex value */ |
|
81 <unsigned int> ::= 5 /* up to 32-bit integer number; no leading sign */ |
|
82 <bool> ::= 1 /* ASCII '0' or '1' */ |
|