{"id":33244133,"url":"https://github.com/rokath/trice","last_synced_at":"2026-01-12T14:50:04.243Z","repository":{"id":37931413,"uuid":"239806806","full_name":"rokath/trice","owner":"rokath","description":"🟢 super fast 🚀 tiny 🐥 𝘾 printf-look-and-feel ✍ trace code, in ⚡ interrupts ⚡ too ‼️, and real-time PC 💻 logging 👀","archived":false,"fork":false,"pushed_at":"2025-12-19T14:40:18.000Z","size":287674,"stargazers_count":846,"open_issues_count":10,"forks_count":86,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-12-21T08:54:31.210Z","etag":null,"topics":["c","compression","data-recording","debugging","diagnostics","embedded","encryption","golang","instrumentation","logging","monitoring","multi-language-support","printf","real-time","rtos","serial","time-measurement","timing-analysis","tool","trace"],"latest_commit_sha":null,"homepage":"https://rokath.github.io/trice/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rokath.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"rokath","buy_me_a_coffee":"rokath","custom":["https://paypal.me/rolfkarlthomas?country.x=DE\u0026locale.x=de_DE"]}},"created_at":"2020-02-11T16:14:57.000Z","updated_at":"2025-12-19T14:23:47.000Z","dependencies_parsed_at":"2024-01-25T16:29:14.027Z","dependency_job_id":"cf8398d0-680c-46b6-8bca-cd1940d8fa1b","html_url":"https://github.com/rokath/trice","commit_stats":null,"previous_names":[],"tags_count":171,"template":false,"template_full_name":null,"purl":"pkg:github/rokath/trice","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokath%2Ftrice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokath%2Ftrice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokath%2Ftrice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokath%2Ftrice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rokath","download_url":"https://codeload.github.com/rokath/trice/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rokath%2Ftrice/sbom","scorecard":{"id":190998,"data":{"date":"2025-08-04","repo":{"name":"github.com/rokath/trice","commit":"0283a37f09257d7c18c15fc2a2c284885903f16a"},"scorecard":{"version":"v5.2.1-28-gc1d103a9","commit":"c1d103a9bb9f635ec7260bf9aa0699466fa4be0e"},"score":4.9,"checks":[{"name":"Maintained","score":10,"reason":"30 commit(s) and 17 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#dangerous-workflow"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Info: jobLevel 'contents' permission set to 'read': .github/workflows/label.yml:15","Warn: no topLevel permission defined: .github/workflows/codeql.yml:1","Warn: no topLevel permission defined: .github/workflows/go.yml:1","Warn: no topLevel permission defined: .github/workflows/goreleaser.yml:1","Warn: no topLevel permission defined: .github/workflows/greetings.yml:1","Warn: no topLevel permission defined: .github/workflows/label.yml:1","Warn: no topLevel permission defined: .github/workflows/learn-github-actions.yml:1","Warn: no topLevel permission defined: .github/workflows/manual.yml:1","Warn: no topLevel permission defined: .github/workflows/stale.yml:1","Warn: no topLevel permission defined: .github/workflows/superlinter.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#token-permissions"}},{"name":"Code-Review","score":0,"reason":"Found 1/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#code-review"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#cii-best-practices"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#binary-artifacts"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#security-policy"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#license"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#packaging"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#branch-protection"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#fuzzing"}},{"name":"Signed-Releases","score":0,"reason":"Project has not signed or included provenance with any releases.","details":["Warn: release artifact v1.0.0 not signed: https://api.github.com/repos/rokath/trice/releases/214820560","Warn: release artifact 0.74.0 not signed: https://api.github.com/repos/rokath/trice/releases/214816645","Warn: release artifact v0.73.1 not signed: https://api.github.com/repos/rokath/trice/releases/196824174","Warn: release artifact v0.73.0 not signed: https://api.github.com/repos/rokath/trice/releases/195532338","Warn: release artifact v0.72.5 not signed: https://api.github.com/repos/rokath/trice/releases/191534014","Warn: release artifact v1.0.0 does not have provenance: https://api.github.com/repos/rokath/trice/releases/214820560","Warn: release artifact 0.74.0 does not have provenance: https://api.github.com/repos/rokath/trice/releases/214816645","Warn: release artifact v0.73.1 does not have provenance: https://api.github.com/repos/rokath/trice/releases/196824174","Warn: release artifact v0.73.0 does not have provenance: https://api.github.com/repos/rokath/trice/releases/195532338","Warn: release artifact v0.72.5 does not have provenance: https://api.github.com/repos/rokath/trice/releases/191534014"],"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#signed-releases"}},{"name":"SAST","score":7,"reason":"SAST tool detected but not run on all commits","details":["Info: SAST configuration detected: CodeQL","Warn: 0 commits out of 1 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#sast"}},{"name":"Pinned-Dependencies","score":1,"reason":"dependency not pinned by hash detected -- score normalized to 1","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:37: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:41: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:52: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/codeql.yml:66: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/codeql.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/go.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/go.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/go.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/go.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/goreleaser.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/goreleaser.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/goreleaser.yml:21: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/goreleaser.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/goreleaser.yml:26: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/goreleaser.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/greetings.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/greetings.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/label.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/label.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/learn-github-actions.yml:8: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/learn-github-actions.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/learn-github-actions.yml:9: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/learn-github-actions.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/stale.yml:17: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/stale.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/superlinter.yml:18: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/superlinter.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/superlinter.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/rokath/trice/superlinter.yml/master?enable=pin","Warn: npmCommand not pinned by hash: .github/workflows/learn-github-actions.yml:11","Info:   0 out of  15 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   2 third-party GitHubAction dependencies pinned","Info:   1 out of   1 goCommand dependencies pinned","Info:   0 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#pinned-dependencies"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/c1d103a9bb9f635ec7260bf9aa0699466fa4be0e/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T20:40:12.922Z","repository_id":37931413,"created_at":"2025-08-16T20:40:12.922Z","updated_at":"2025-08-16T20:40:12.922Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28340410,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","compression","data-recording","debugging","diagnostics","embedded","encryption","golang","instrumentation","logging","monitoring","multi-language-support","printf","real-time","rtos","serial","time-measurement","timing-analysis","tool","trace"],"created_at":"2025-11-16T21:00:28.147Z","updated_at":"2026-01-12T14:50:04.208Z","avatar_url":"https://github.com/rokath.png","language":"C","readme":"# 🅃🅁ace 🄸d's 🄲 🄴mbedded\n\n\u003ca id=\"top\"\u003e \u003c/a\u003e\n\n![TriceGirlS.png](docs/ref/TriceGirl-167x222.png) **Hi, I am Trice.**\n\n\u003c!-- [github pages](https://rokath.github.io/trice/) --\u003e\n[Trice User Manual](https://rokath.github.io/trice/docs/TriceUserManual.html)\n\n\u003c!-- ![GitHub Workflow Status](https://img.shields.io/github/workflow/status/rokath/trice/goreleaser) --\u003e\n![GitHub issues](https://img.shields.io/github/issues/rokath/trice)\n![GitHub All Releases](https://img.shields.io/github/downloads/rokath/trice/total)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/rokath/trice)\n![GitHub watchers](https://img.shields.io/github/watchers/rokath/trice?label=watch)\n![GitHub release (latest by date)](https://img.shields.io/github/v/release/rokath/trice)\n![GitHub commits since latest release](https://img.shields.io/github/commits-since/rokath/trice/latest)\n[![Go Report Card](https://goreportcard.com/badge/github.com/rokath/trice)](https://goreportcard.com/report/github.com/rokath/trice)\n[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)\n[![Coverage Status](https://coveralls.io/repos/github/rokath/trice/badge.svg?branch=main)](https://coveralls.io/github/rokath/trice?branch=main)\n\n\u003c!-- [![Sponsor rokath](https://github.com/sponsors/rokath/button)](https://github.com/sponsors/rokath) --\u003e\n\u003c!-- [![test](https://github.com/shogo82148/actions-goveralls/workflows/_test/badge.svg?branch=main)](https://coveralls.io/github/rokath/trice) --\u003e\n\nLog in (a) trice ([S\u003eG](https://www.screentogif.com/)) ![ ](./docs/ref/life0.gif)\n\neven inside **↯ interrupts** in less than 1 µs❗\n\n## About\n\n- Replace `printf` or `log` in **C**-code for getting:\n  - **[Speed](./docs/TriceUserManual.md#trice-speed)**, to be usable also **inside interrupts**,\n  - **[Space](./docs/TriceUserManual.md#trice-memory-needs)**, to reduce needed FLASH memory size,\n  - **[Features](./docs/TriceUserManual.md#trice-features-(overview))** delighting the developers heart.\n- \u003cu\u003eMain idea:\u003c/u\u003e Logging strings **not** into an embedded device to display them later on a PC but keep [usage comfortable and simple](./docs/TriceUserManual.md#port-it).\n\n  ```diff\n  - No version mismatch hassle❗\n  + The Trice ID List accumulates the log strings -\u003e the latest version can decode all former versions as well❗\n  ```\n\n- *Trice* consists of 2 parts:\n  1. **C** code `trice` macros, similar usable like `printf`, generating tiny \u0026 super-fast embedded device real-time trace/log code.\n  2. Tool **trice** for managing and visualization.\n      - Written in [Go](https://golang.org/) and therefore usable on all platforms Go supports.\n      - You can also use your own environment to receive the *Trice* packages, exchange the carried IDs with the format string and print out.\n- [Trice User Manual](./docs/TriceUserManual.md)\n- Trice Status: **_Trice is ready to be used!_**\n\n## Possible Use Cases\n\n- Using *Trice* not only for **printf debugging** but also as **logging** technique is possible and gives the advantage to have very short messages (no strings) for transmission, but keep in mind that the file [til.json](./demoTIL.json) is the key to read all output if your devices in the field for 10 or more years.\n  - Optionally add [til.json](./demoTIL.json) as a (compressed) resource to your target image. One possibility is using [SRecord](http://srecord.sourceforge.net/download.html). Or simply provide a download link.\n- You can see *Trice* also as a kind of **data compression** what could be interesting for [IoT](https://en.wikipedia.org/wiki/Internet_of_things) things, especially [NB-IoT](https://en.wikipedia.org/wiki/Narrowband_IoT), where you have very low data rates.\n- [Storing *Trice* messages in FLASH memory](./docs/TriceUserManual.md#writing-the-trice-logs-into-an-sd-card-(or-a-user-specific-output)) for later log analysis saves memory because a typical `TRICE` occupies only 4 bytes independently of the format string length plus optional values.\n- Also, it is possible to **encrypt** the *Trice* transfer packets to get a reasonable protection for many cases.\n  - This way you can deliver firmware images with encrypted *Trice* output, only readable with the appropriate key and [til.json](./demoTIL.json).\n  - [XTEA](https://en.m.wikipedia.org/wiki/XTEA) is implemented as one option.\n- You can even translate the [til.json](./demoTIL.json) file in **different languages**, so changing a language is just changing the [til.json](./demoTIL.json) file without touching the target binary.\n- With *Trice* it is easy to do **timing analysis** on distributed embedded systems. Host and target timestamps are supported.\n\n## How it approximately works (UART example)\n\nThis slightly simplified [view](https://github.com/jgraph/drawio) is explained [here](./docs/TriceUserManual.md#how-it-works---the-main-idea)\n\n![trice](docs/ref/triceCOBSBlockDiagram.svg)\n\n## Data Transfer\n\n- Implemented:\n  - [UART](https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter) connectable to virtual UART over USB\n  - [RTT](https://www.segger.com/products/debug-probes/j-link/technology/about-real-time-transfer/) over [J-Link](./third_party/segger.com/ReadMe.md) and [RTT over ST-Link](./third_party/goST/ReadMe.md)\n  - TCP4 \n  - UDP4 (currently as PR #529)\n- A small separate microcontroller is always usable as interfaces bridge from [GPIO](https://circuitcellar.com/cc-blog/a-trace-tool-for-embedded-systems/), [I²C](https://en.wikipedia.org/wiki/I%C2%B2C), [SPI](https://en.wikipedia.org/wiki/Serial_Peripheral_Interface), [CAN](https://en.wikipedia.org/wiki/CAN_bus), [LIN](https://en.wikipedia.org/wiki/Local_Interconnect_Network), ... to UART.\n- With a Chip from FTDI, check for example [Adafruit FT232H Breakout](https://learn.adafruit.com/adafruit-ft232h-breakout), GPIO, I2C and SPI are easy accessable.\n\n## Display server option\n\nStart `trice ds` inside a console, option: [third_party/alacritty](./third_party/alacritty), locally or on a remote PC and connect with several **trice** tool instances like with `trice log -p COM15 -ds` for example.\n\n## Documentation\n\n- [https://interrupt.memfault.com/blog/trice](https://interrupt.memfault.com/blog/trice) (a bit outdated)\n- [Trice User Manual](./docs/TriceUserManual.md) (covers also the interrupt blog actualized information)\n- Check [issues](https://github.com/rokath/trice/issues) and [discussions](https://github.com/rokath/trice/discussions) including the closed items.\n- Read the target source code, especially [triceDefaultConfig.h](./src/triceDefaultConfig.h)\n- View the [CLI](https://en.wikipedia.org/wiki/Command-line_interface) options by executing `trice help -all` in a terminal or reading [tricehelpall_test.go](./internal/args/tricehelpall_test.go)\n- Look into and optionally modify [./internal/emitter/lineTransformerANSI.go](./internal/emitter/lineTransformerANSI.go) (Needs `go install ./cmd/trice/...` afterwards.)\n\n## Debugging using VS-Code and Clang for a Trice-instrumented Project in Direct-Out Mode over SEGGER-RTT\n\n(See chapter [Development Environment Setup](./docs/TriceUserManual.md#development-environment-setup) for more details.)\n\n\u003cimg src=\"docs/ref/Animation.gif\" width=\"1200\"\u003e\n\n## Trice Cache\n\nStarting with Trice version 0.70.0 it is possible to use additionally the Trice `-cache` CLI switch for the commands `trice insert` and `trice clean`. This switch will have only effect when the user creates in his home directory the **`.trice/cache`** folder. ([Trice Cache Spec](./docs/TriceUserManual.md#trice-cache-for-compilation-speed))\n\n### When to use it\n\nWhen you use `trice i` as a pre-compile step and `trice c` as a post-compile step to have the IDs not in the project source code when you work on it, therefore only during compilation time, and wish to speed-up the whole thing.\n\n### How it works\n\nThe Trice cache keeps copies of all to `trice i` or `trice c` passed files after processing them, to avoid repeatedly ID inserting and cleaning. **The copies are used to get the same results as with `trice i` or `trice c` for all files not edited inbetween.** Edited files are processed normally and the cache is updated afterwards. Because the file copies are done without changing the file modification time, **a build system does not process unchanged files again even the IDs have been temporarily removed from the files**.\n\n### Hint\n\n\u003e **\u003cspan style=\"color:red\"\u003e Special care is needed, when the build system modifies source files as well!\u003c/span\u003e**\n\nFor example an auto-formatter should get active **before** the `tice insert` command.\n\n## Wich mode to use?\n\n- For the development direct mode with SEGGER_RTT is recommended.\n- Most use cases are coverable in deferred mode with TRICE_BUFFER == TRICE_RING_BUFFER (less RAM needs) in TRICE_MULTI_PACK_MODE (less transfer data).\n\n## Project Status\n\nTrice is full usable and there are no known bugs (see [issues](https://github.com/rokath/trice/issues)).\n\n```diff\n+ Please use v1.0 or v1.1 or branch main if you intend to build from the sources.\n- Do not expect a well working Trice binary in branch \"dev\" right now. (2025-DEC)\n```\n\n## Future \n\nThe documentation could get improved, for example by adding a quick start help. Additional features like remote procedure calls could be described and a separate tlog, maybe written in C, would allow logging on any platforms - not only **Go** supported ones.\n\n## Structured Logging\n\nTrice will (hopefully soon) suppport structured logging. Triggered by [#531](https://github.com/rokath/trice/discussions/531) there is now a [specifcation draft](./docs/TriceUserManual.md#trice-structured-logging). Please provide some critical feedback before the implementaion starts.\n\n## Support?\n\n* Yes please - Trice takes a lot of my spare time and I wish to keep it MIT licensed in the future as well.\n* If you make profit using Trice in your products, donations would convince my family to proceed with Trice and also secure future improvements. \n* :star: it. ☺  \n\n[Become a Sponsor with your Github Account](https://github.com/sponsors/rokath/)\n\nOR\n\n\u003ca href=\"https://www.buymeacoffee.com/rokath\" target=\"_blank\"\u003e\u003cimg src=\"https://cdn.buymeacoffee.com/buttons/default-orange.png\" alt=\"Buy Me A Coffee\" height=\"30\" width=\"120\"\u003e\u003c/a\u003e\n\nOR\n\n\u003cp\u003e\n  \u003ca href=\"https://www.paypal.me/rolfkarlthomas\"\u003e\n      \u003cimg src=\"https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif\" alt=\"paypal\" height=\"40\" width=\"120\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\nCloning the repo:\n\n```bash\ngit clone https://github.com/rokath/trice.git\n```\n\n## Similar projects\n\n- ARM ITM/SWO (hardware-native)\n- ARM Keil Event Recorder (hardware-native)\n- [baical.net](http://baical.net/up7.html) (C)\n- [call stack logger function instrumentation](https://dev.to/taugustyn/call-stack-logger-function-instrumentation-as-a-way-to-trace-programs-flow-of-execution-419a) (a way to trace programs flow of execution)\n- [Debugging with Dynamic Printf Breakpoints](https://mcuoneclipse.com/2022/02/09/debugging-with-dynamic-printf-breakpoints/) (Eclipse IDE option)\n- [defmt (Rust)](https://github.com/knurling-rs/defmt)\n- [Diagnostic Log and Trace](https://github.com/COVESA/dlt-daemon) (AUTOSAR)\n- [Embedded Logger (elog)](https://github.com/martinribelotta/elog) (Embedded logger with minimal footprint and memory usage)\n- [Logging with symbols - The Embedonomicon](https://docs.rust-embedded.org/embedonomicon/logging.html)\n- [McuLog (McuOnEclipse)](https://mcuoneclipse.com/2020/06/01/mculog-logging-framework-for-small-embedded-microcontroller-systems/)\n- [MCUViewer](https://github.com/klonyyy/MCUViewer)\n- [Memfault Compact Log Library](https://docs.memfault.com/docs/mcu/compact-logs/#host-decoding) (part of firmware SDK)\n\u003c!-- - [Metal Serial Library](https://github.com/metal-ci/_test/tree/master/doc/metal.serial.md) --\u003e\n- [Minimal Structured Logging for Autonomous Vehikles](https://youtu.be/FyJI4Z6jD4w) (C++, closed source talk)\n- [NanoLog (C++11)](https://github.com/PlatformLab/NanoLog) (Linux C++)\n- [Percepio Tracealyzer (with TraceRecorder)](https://percepio.com/tracealyzer/) (Visual Trace Diagnostics)\n- [Pigweed Trace Tokenized](https://pigweed.dev/pw_trace_tokenized/)\n- [Postform](https://github.com/Javier-varez/Postform) (Postponed formatting experiments with string interning in C++. Inspired by the defmt Rust crate )\n- [qpspy](https://www.state-machine.com/qtools/qpspy.html) (C/C++)\n- [Real-time binary data logging/tracing toolkit](https://github.com/RTEdbg/RTEdbg)\n- [SEGGER System View](https://www.segger.com/products/development-tools/systemview/technology/what-is-systemview/)\n- [Serial-Studio](https://github.com/Serial-Studio/Serial-Studio) (Data visualisation)\n- [Tonbandgerät](https://github.com/schilkp/Tonbandgeraet) (A small embedded systems tracer with support for bare-metal and FreeRTOS-based targets)\n- [Traces](https://github.com/yotamr/traces) (API tracing framework for Linux C/C++ applications\n- [uLog (RD Poor)](https://github.com/rdpoor/ulog)\n- [Zepyr Dictionary Based Logging](https://docs.zephyrproject.org/3.1.0/services/logging/index.html#dictionary-based-logging)\n\n[ChatGPT Trice Compare (2025-05-26)](https://htmlpreview.github.io/?https://github.com/rokath/trice/blob/main/docs/ChatGPTo4-mini-high_TriceCompare.html)\n\n\u003cp align=\"right\"\u003e(\u003ca href=\"#top\"\u003eback to top\u003c/a\u003e)\u003c/p\u003e\n","funding_links":["https://github.com/sponsors/rokath","https://buymeacoffee.com/rokath","https://paypal.me/rolfkarlthomas?country.x=DE\u0026locale.x=de_DE","https://github.com/sponsors/rokath/button","https://github.com/sponsors/rokath/","https://www.buymeacoffee.com/rokath","https://www.paypal.me/rolfkarlthomas"],"categories":["User Interface","debug"],"sub_categories":["Logging","log"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frokath%2Ftrice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frokath%2Ftrice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frokath%2Ftrice/lists"}