> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# 如何使用 Tenderly Debugger

> 使用 Tenderly Debugger 逐行执行交易、检查状态变化，并识别任何智能合约中确切的回滚点。

Tenderly Debugger 逐个调用和源代码行地遍历 EVM 交易的执行过程，暴露执行跟踪、堆栈、合约状态以及交易回滚的确切位置。使用它来查找交易失败的原因、在任何步骤检查合约状态，并针对已验证的 Solidity 源代码重播交易。

观看这段简短的视频以了解使用 Debugger 的基础知识，并遵循下面的快速入门查看详细的功能演练。

[在 Loom 上观看 →](https://www.loom.com/share/09413e8a867f4ddeaa41a5080d771895?sid=b8f60cda-fcb8-401b-ba9a-8bb69630fe9a)

## Debugger 快速入门

要使用 Debugger，您需要从特定交易开始。试试这个[示例交易](https://dashboard.tenderly.co/tx/0x1696cfc031695003b8a58f0379c7f111b34c7612a67681354dc57cb5853c5c63/debugger?trace=0.2.6.21.1\&pk_vid=4405d1610803d9751776942168287f02)。

1. 转到左侧的 **Transactions** 选项卡，或在顶部 Explorer 栏中搜索交易哈希。
2. 点击右上角的 **Debugger** 按钮。

Debugger 界面由四个主要面板组成：

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger/debugger-panels-2.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=92882c878f9b4a3afcd74585ccc50f10" alt="Debugger panels" width="2672" height="1426" data-path="images/developer-explorer/debugger/debugger-panels-2.webp" />

* **执行跟踪**（左上）：显示交易期间调用的序列。
* **智能合约源代码**（右上）：显示正在交互的合约代码。
* **堆栈跟踪**（左下）：列出直到当前函数所调用的方法。
* **调用信息**（右下）：提供当前调用的详细信息。

## 执行跟踪

**Execution Trace** 部分让您可以看到在交易生命周期中进行的每一次调用。方便的切换让您可以在完整跟踪或仅 `CALL` 和 `DELEGATECALL` 之间过滤视图。

您还可以直接在跟踪的任何部分留下评论，这对协作或个人笔记很有用。

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger/comment-execution-trace.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=514b1c5f8580c458d5c743d7f8637e62" alt="Debugger panels" width="4076" height="2382" data-path="images/developer-explorer/debugger/comment-execution-trace.webp" />

## 堆栈跟踪

**Stack Trace** 提供了对导致活动函数调用之前调用的方法的查看，让您对交易的流程有更清晰的了解。

## 解码调用信息

在这里，您以 JSON 格式获得交易执行跟踪中当前调用的解码详细信息。这包括：

* 被调用函数的名称
* 操作码（`JUMP`、`CALL`、`DELEGATECALL`、`STATICCALL`、`CREATE2`、`CREATE`、`REVERT`、`JUMPDEST`）
* 合约和调用者地址，以及调用者的余额
* 解码的输入和输出
* Gas 使用统计，显示已使用的总 gas、当前函数消耗的 gas 和剩余 gas

## 在调用跟踪中导航

使用 Debugger 的导航按钮，跳转穿过调用跟踪和代码行非常简单。

**Next/Previous** 让您在调用跟踪中移动，而 **Step Up** 和 **Step Over** 帮助您导航堆栈跟踪和调用层级。

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger/debugger-skip-call-trace.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=fcafc5a099f21f819759b0002839b5f6" alt="Debugger panels" width="2672" height="1426" data-path="images/developer-explorer/debugger/debugger-skip-call-trace.webp" />

## 评估表达式

**Evaluate** 功能允许您直接在 Debugger 中测试表达式。这对于检查全局变量、合约变量、函数参数和局部变量非常合适。

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger/debugger-evaluate.webp?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=c1726756dfca3e675a17b82927c08a05" alt="Eval modal" width="4076" height="2382" data-path="images/developer-explorer/debugger/debugger-evaluate.webp" />

当前版本的 **Evaluate** 支持数组和结构体形式的表达式。不支持元组，因此无法评估。

<img src="https://mintcdn.com/tenderly/XsEZlaGXYskrtN68/images/developer-explorer/debugger-1.png?fit=max&auto=format&n=XsEZlaGXYskrtN68&q=85&s=0913ef862d74b729b4ec58c4e1230d22" alt="Debugger + expressions visible for Eval" width="3584" height="2274" data-path="images/developer-explorer/debugger-1.png" />

<Note>
  请注意，Evaluate 仍在开发中，我们正努力让它变得更加强大。
</Note>
