Dev pcsampling - #2588
Conversation
Decode periodic PC and processor-sleep samples into CSV and compact CTF output. Add a Trace Compass sleep timeline and reject unsupported PC-sample payloads.
Test Results 4 files 4 suites 1s ⏱️ Results for commit d91e69f. ♻️ This comment has been updated with latest results. |
There was a problem hiding this comment.
🟢 Approval recommended
The functional changes are well-covered by unit/integration tests, with only a minor diagnostic-message clarity nit identified.
Pull request overview
Adds support for periodic DWT PC sampling (including processor-sleep indications) to the ctrace event model and output backends, extending CTF/CSV generation and Trace Compass visualization while updating tests and documentation accordingly.
Changes:
- Decode periodic PC sample packets into a dedicated
PcSampleTraceEvent, including unsupported-payload reporting viaTraceIssueEvent. - Emit PC-sample data in CSV and as a compact
PC_SAMPLECTF event, plus Trace Compass XML updates to visualize sleep intervals. - Update unit/integration coverage and architecture/todo documentation to reflect the new supported output semantics.
File summaries
| File | Description |
|---|---|
| tools/ctrace/test/unit/support/CtfTestSupport.h | Extends test-side CTF record parsing to understand PC_SAMPLE payload sizing/validation. |
| tools/ctrace/test/unit/src/output/ctf/CtfSchemaTests.cpp | Adds schema density checks for the new PcSample event and PcSampleState values. |
| tools/ctrace/test/unit/src/output/ctf/CtfMetadataWriterTests.cpp | Validates Trace Compass XML includes PC-sample state graph and avoids string-valued states. |
| tools/ctrace/test/unit/src/output/ctf/CtfEncoderTests.cpp | Adds end-to-end CTF encoding test coverage for PC-sample and sleep indications. |
| tools/ctrace/test/unit/src/output/csv/CsvRowMapperTests.cpp | Verifies CSV row mapping for PC sample vs sleep indication. |
| tools/ctrace/test/unit/src/output/csv/CsvFileOutputTests.cpp | Updates CSV file output spec test to include PC-sample rows. |
| tools/ctrace/test/unit/src/model/TraceSelectionTests.cpp | Ensures pcsample selection works and stays distinct from dwt. |
| tools/ctrace/test/unit/src/decode/DwtPacketDecoderTests.cpp | Switches to dedicated PC-sample event expectations and adds unsupported-payload coverage. |
| tools/ctrace/test/unit/src/decode/DecodePipelineTests.cpp | Adds pipeline-level validation that periodic PC samples survive decoding. |
| tools/ctrace/test/integration/src/CtraceIntegTests.cpp | Extends integration trace to include a PC sample and asserts CSV output includes it. |
| tools/ctrace/src/output/ctf/TraceCompassXmlWriter.cpp | Adds state provider + time graph view to show processor sleep intervals driven by PC-sample and trace-status events. |
| tools/ctrace/src/output/ctf/CtfSchema.h | Adds EventId::PcSample, PcSampleState, and schema naming/value helpers. |
| tools/ctrace/src/output/ctf/CtfMetadataWriter.cpp | Declares the PC_SAMPLE event fields in generated CTF metadata. |
| tools/ctrace/src/output/ctf/CtfEncoder.h | Adds encoder entry point for writing PC-sample events. |
| tools/ctrace/src/output/ctf/CtfEncoder.cpp | Implements PC_SAMPLE record encoding with quality/overflow tracking. |
| tools/ctrace/src/output/csv/CsvRowMapper.cpp | Maps PC-sample events to the CSV pc column (blank for sleep). |
| tools/ctrace/src/model/TraceSelection.cpp | Exposes PcSampleTraceEvent through the public TraceEventType::PcSample selector. |
| tools/ctrace/src/model/TraceEvent.h | Adds PcSampleTraceEvent and UnsupportedDwtPcSamplePayload trace-issue code. |
| tools/ctrace/src/diagnostics/TraceIssueReporter.cpp | Includes the new PC-sample unsupported-payload issue code in user diagnostics classification. |
| tools/ctrace/src/decode/DwtPacketDecoder.cpp | Decodes periodic PC samples (4-byte PC) and sleep indication (1-byte zero) into semantic events; emits trace issues for unsupported payloads. |
| tools/ctrace/docs/todo.md | Removes the PC-sampling TODO entry now that functionality is implemented. |
| tools/ctrace/docs/architecture.md | Updates architecture notes to include pcsample as implemented output semantics and describes visualization behavior. |
Review details
- Files reviewed: 22/22 changed files
- Comments generated: 1
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
# Conflicts: # tools/ctrace/src/output/ctf/CtfSchema.h # tools/ctrace/src/output/ctf/TraceCompassXmlWriter.cpp # tools/ctrace/test/unit/src/output/ctf/CtfMetadataWriterTests.cpp # tools/ctrace/test/unit/src/output/ctf/CtfSchemaTests.cpp
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2588 +/- ##
==========================================
+ Coverage 72.34% 72.40% +0.05%
==========================================
Files 185 185
Lines 30334 30393 +59
Branches 17901 17926 +25
==========================================
+ Hits 21946 22005 +59
Misses 6079 6079
Partials 2309 2309
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
Fixes
Changes
PC_SAMPLECTF event with sample-quality and overflow information./*sequences for the copyright comment parser.Validation
Checklist