tp: implement Python style error message stack traces

This CL implements traceback error-messages similar to Python for all
SQL errors. Specifically, every instance of execution of SQL in trace
processor now augments the error message with bread-crumbs adding its
context. This makes it much easier to understand where, how and why
errors happened.

The format of the error message draws heavy inspiration from Python so
as to be instantly understandable by anyone who has seen error
messages from there

For example, suppose you make a syntax error in the shell:
```
> select s from slice
Traceback (most recent call last):
  File "stdin" line 1 col 8
    select s from slice
           ^
no such column: s
```

And if there is an error in a stdlib module called by a metric:
```
Traceback (most recent call last):
  Metric "android/android_startup.sql" line 18 col 1
    SELECT IMPORT('android.startup.startups');
    ^
  Module import "android.startup.startups" line 106 col 5
        startup_i,
        ^
no such column: startup_i
```

Change-Id: Ie181a8aebedc655227a3505e6909d42db7d9cba7
Bug: 282918991
Fixes: 282918991
32 files changed
tree: cae8f5cbb0de8be3606221001dce92c78dd705da
  1. .github/
  2. bazel/
  3. build_overrides/
  4. buildtools/
  5. debian/
  6. docs/
  7. examples/
  8. gn/
  9. include/
  10. infra/
  11. protos/
  12. python/
  13. src/
  14. test/
  15. third_party/
  16. tools/
  17. ui/
  18. .clang-format
  19. .clang-tidy
  20. .git-blame-ignore-revs
  21. .gitattributes
  22. .gitignore
  23. .gn
  24. .style.yapf
  25. Android.bp
  26. Android.bp.extras
  27. BUILD
  28. BUILD.extras
  29. BUILD.gn
  30. CHANGELOG
  31. codereview.settings
  32. DIR_METADATA
  33. heapprofd.rc
  34. LICENSE
  35. meson.build
  36. METADATA
  37. MODULE_LICENSE_APACHE2
  38. OWNERS
  39. perfetto.rc
  40. PerfettoIntegrationTests.xml
  41. PRESUBMIT.py
  42. README.chromium
  43. README.md
  44. TEST_MAPPING
  45. traced_perf.rc
  46. WORKSPACE
README.md

Perfetto - System profiling, app tracing and trace analysis

Perfetto is a production-grade open-source stack for performance instrumentation and trace analysis. It offers services and libraries and for recording system-level and app-level traces, native + java heap profiling, a library for analyzing traces using SQL and a web-based UI to visualize and explore multi-GB traces.

See https://perfetto.dev/docs or the /docs/ directory for documentation.