tree: cb6c6226b34a69512565d5e6d9ba0d38edb69e30 [path history] [tgz]
  1. debug/
  2. agent_protocol.cc
  3. agent_protocol.h
  4. BUILD.gn
  5. client_protocol.cc
  6. client_protocol.h
  7. decode_exception.cc
  8. decode_exception.h
  9. decode_exception_unittests.cc
  10. message_reader.cc
  11. message_reader.h
  12. message_unittests.cc
  13. message_writer.cc
  14. message_writer.h
  15. protocol.cc
  16. protocol.h
  17. protocol_helpers.cc
  18. protocol_helpers.h
  19. protocol_unittests.cc
  20. README.md
  21. records.cc
  22. records.h
  23. register_desc.cc
  24. register_desc.h
  25. register_desc_unittest.cc
  26. register_test_support.cc
  27. register_test_support.h
src/developer/debug/ipc/README.md

Debug IPC

This is the shared IPC code between the debug agent (code in ../debug_agent) and the zxdb frontend (code in ../zxdb). It's not useful for other programs. Client debugging code should use the client debug library in ../zxdb/client.

This is a super simple custom IPC format because it is intended to be used between two computers (unlike FIDL) and called at a very low level when debugging the system (when higher-level primitives should be avoided). The goal is to replace it with a more robust IPC library when one is provided for the system that can communicate off-device.

Protocol information

  • Structs are defined with sized types and serialized little-endian such that they can be memcpy'd on little-endian machines.

  • Vectors are serialized as a 32-bit count followed by the number of records serialized in the normal manner.

  • Strings are serialized as a 32-bit size followed by that number of 8-bit characters. No encoding is specified, the data is not null terminated.