> For the complete documentation index, see [llms.txt](https://docs.blocktorch.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.blocktorch.xyz/use-cases/tracing.md).

# Tracing

### Tracing Overview

Tracing is a technique used in software development to monitor and record specific information about a program's execution. It's a crucial part of debugging and performance analysis, allowing developers to understand how a program behaves at runtime, and identify any potential issues or bottlenecks.

#### Key Aspects of Tracing

* **Visibility**: Tracing provides visibility into the transaction flow and its interaction with different functions, making it easier to pinpoint errors or inefficiencies.
* **Performance Analysis**: By analyzing trace logs, developers can identify slow operations and optimize them to improve overall performance.
* **Debugging**: Tracing allows developers to examine the state of a program at various points in execution, facilitating easier debugging of complex issues.
* **Monitoring**: In production environments, tracing can be used to monitor the health and performance of applications, aiding in proactive maintenance.

#### Blocktorch's Tracing capabilities

* [**Stack traces**](/use-cases/tracing/stack-traces.md) for smart contract transactions
* [**Invocation flows**](broken://pages/vqW6eom34J5WqcORSIXn) to follow through the tree of function invocations visually
* [**End-2-End Traces**](/use-cases/tracing/end-2-end-traces.md) across different systems by creating a full span starting from the user action in your application's [User Interface](/concepts/data-sources/react-frontends.md)
