[all-commits] [llvm/llvm-project] 165f45: [lldb][lldb-vscode] Pretty print JSON to log files

David Spickett via All-commits all-commits at lists.llvm.org
Thu Aug 3 08:09:29 PDT 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 165f45a877742a74988d63f36aee635c8e0a47da
      https://github.com/llvm/llvm-project/commit/165f45a877742a74988d63f36aee635c8e0a47da
  Author: David Spickett <david.spickett at linaro.org>
  Date:   2023-08-03 (Thu, 03 Aug 2023)

  Changed paths:
    M lldb/tools/lldb-vscode/VSCode.cpp

  Log Message:
  -----------
  [lldb][lldb-vscode] Pretty print JSON to log files

This makes anlysing test failures much more easy.

For SendJSON this is simple, just use llvm::format instead.

For GetNextObject/ReadJSON it's a bit more tricky.
* Print the "Content-Length:" line in ReadJSON, but not the json.
* Back in GetNextObject, if the JSON doesn't parse, it'll be
  printed as a normal string along with an error message.
* If we didn't error before, we have a JSON value so we pretty print it.
* Finally, if it isn't an object we'll log an error for that,
  not including the JSON.

Before:
```
<--
Content-Length: 81

{"command":"disconnect","request_seq":5,"seq":0,"success":true,"type":"response"}
```

After:
```
<--
Content-Length: 81

{
  "command": "disconnect",
  "request_seq": 5,
  "seq": 0,
  "success": true,
  "type": "response"
}
```

There appear to be some responses that include strings that are themselves JSON,
and this won't pretty print those but I think it's still worth doing.

Reviewed By: wallace

Differential Revision: https://reviews.llvm.org/D156979




More information about the All-commits mailing list