Skip to content

Commit b6f050f

Browse files
[lldb] Document some more packets (#92124)
Comparing a bit of the mock GDB server code to what was in the document I found these: * QLaunchArch * qSpeedTest * qSymbol qSymbol is the most mysterious but it did have some examples in a comment so I've adapted that.
1 parent b0a1ae2 commit b6f050f

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

lldb/docs/resources/lldbgdbremote.md

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,6 +867,22 @@ error replies.
867867
**Priority To Implement:** Low. Only needed if the remote target wants to
868868
provide strings that are human readable along with an error code.
869869
870+
## QLaunchArch
871+
872+
Set the architecture to use when launching a process for hosts that can run
873+
multiple architecture slices that are contained in a single universal program
874+
file.
875+
876+
```
877+
send packet: $QLaunchArch:<architecture>
878+
```
879+
880+
The response is `OK` if the value in `<architecture>` was recognised as valid
881+
and will be used for the next launch request. `E63` if not.
882+
883+
**Priority To Implement:** Only required for hosts that support program files
884+
that contain code for multiple architectures.
885+
870886
## QListThreadsInStopReply
871887
872888
Enable the `threads:` and `thread-pcs:` data in the question-mark packet
@@ -1883,6 +1899,77 @@ some platforms know, or can find out where this information is.
18831899
Low if you have a debug target where all object and symbol files
18841900
contain static load addresses.
18851901
1902+
## qSpeedTest
1903+
1904+
Test the maximum speed at which packets can be sent and received.
1905+
1906+
```
1907+
send packet: qSpeedTest:response_size:<response size>;
1908+
read packet: data:<response data>
1909+
```
1910+
1911+
`<response size>` is a hex encoded unsigned number up to 64 bits in size.
1912+
The remote will respond with `data:` followed by a block of `a` characters
1913+
whose size should match `<response size>`, if the connection is stable.
1914+
1915+
If there is an error parsing the packet, the response is `E79`.
1916+
1917+
This packet is used by LLDB to discover how reliable the connection is by
1918+
varying the amount of data requested by `<response size>` and checking whether
1919+
the expected amount and values were received.
1920+
1921+
**Priority to Implemment:** Not required for debugging on the same host, otherwise
1922+
low unless you know your connection quality is variable.
1923+
1924+
## qSymbol
1925+
1926+
Notify the remote that LLDB is ready to do symbol lookups on behalf of the
1927+
debug server. The response is the symbol name the debug server wants to know the
1928+
value of, or `OK` if the debug server does not need to know any more symbol values.
1929+
1930+
The exchange always begins with:
1931+
```
1932+
send packet: qSymbol::
1933+
```
1934+
1935+
The `::` are delimiters for fields that may be filled in future responses. These
1936+
delimiters must be included even in the first packet sent.
1937+
1938+
The debug server can reply one of two ways. If it doesn't need any symbol values:
1939+
```
1940+
read packet: OK
1941+
```
1942+
1943+
If it does need a symbol value, it includes the ASCII hex encoded name of the
1944+
symbol:
1945+
```
1946+
read packet: qSymbol:6578616D706C65
1947+
```
1948+
1949+
This should be looked up by LLDB then sent back to the server. Include the name
1950+
again, with the vaue as a hex number:
1951+
```
1952+
read packet: qSymbol:6578616D706C65:CAFEF00D
1953+
```
1954+
1955+
If LLDB cannot find the value, it should respond with only the name. Note that
1956+
the second `:` is not included here, whereas it is in the initial packet.
1957+
```
1958+
read packet: qSymbol:6578616D706C65
1959+
```
1960+
1961+
If LLDB is asked for any symbols that it cannot find, it should send the
1962+
initial `qSymbol::` again at any point where new libraries are loaded. In case
1963+
the symbol can now be resolved.
1964+
1965+
If the debug server has requested all the symbols it wants, the final response
1966+
will be `OK` (whether they were all found or not).
1967+
1968+
If LLDB did find all the symbols and recieves an `OK` it does not need to send
1969+
`qSymbol::` again during the debug session.
1970+
1971+
**Priority To Implement:** Low, this is rarely used.
1972+
18861973
## qThreadStopInfo\<tid\>
18871974
18881975
Get information about why a thread, whose ID is `<tid>`, is stopped.

0 commit comments

Comments
 (0)