> For the complete documentation index, see [llms.txt](https://chainide.gitbook.io/chainide-chinese/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chainide.gitbook.io/chainide-chinese/4.-chainide-quan-ti-bu-ju/4.7.-cha-jian-xi-tong-mo-kuai/2.7.1-chainide-debugger.md).

# 2.7.1 ChainIDE Debugger

{% embed url="<https://www.youtube.com/watch?v=GTq2ltR2rSM>" %}

ChainIDE Debugger在输入交易hash后会显示合约的状态。

它可以在ChainIDE上创建的交易，也可以通过提供交易的地址来使用。后者的前提是你有合约的源代码，或者你已经输入了经过验证的合约地址。

以下方法可以启动一个调试会话。

1. 当一个成功或失败的交易出现在终端中时，点击调试按钮。调试器将被激活，并在侧面板中获得焦点。
2. 在插件管理器中激活调试器，然后点击图标面板中的错误。要开始调试会话，输入一个已部署的事务的地址--同时在编辑器中有源代码，然后点击开始调试按钮。

## Debugger面板

#### Function Stack

函数栈列出了transaction正在与之交互的函数。

![](/files/Z8IqOCGPpFPGVK5LB8gP)

#### Solidity Locals

Solidity Locals 是展示一个函数内的局部变量。

![](/files/oRzLW8VnnKFZYu840zNS)

#### Solidity State

这些是合约的状态变量。

![](/files/M7pVlHdcnblRz3Lcjgze)

#### Opcodes

这个面板显示了调试器目前所处的步骤号和操作码。

![](/files/lNQ1GMP21OLofpQOkQlG)

#### Step details

步骤详情显示了关于操作码步骤的更多信息。

![](/files/xgCi1h7h6uLRQQHvAzZy)

#### Stack

该面板显示EVM堆栈。

![](/files/1FRE3s9BbKztoEbeWKby)

#### Memory

每一个新的信息调用都会清空内存。内存是线性的，可以在字节级寻址。读取的宽度被限制在256位，而写入的宽度可以是8位或256位。

内存面板由3列组成。你可能需要让Remix的侧边面板宽一点，以使格式正确。(将主面板和侧板之间的边界拖到右边）。

第1列是内存中的位置。第二列是十六进制的编码值。第3列是解码后的值。如果什么都没有，那么问号(?)将显示--像这样。

![](/files/fW9uofyG9pK4mxM1oOXl)

#### Storage

该面板持久性存储。

#### Call Stack

所有的计算都是在一个叫做调用堆栈的数据阵列上进行的。它的最大尺寸为1024个元素，包含256位的字。

![](/files/y61t1n2ZioSJ203ZgEi1)

#### Call Data

调用数据包含函数参数。

![](/files/wU8uOSyn62AqCYf3vzgD)

#### Return Value

指的是函数将返回的值。

![](/files/Xx6SJvPd7Yjd65HhlR08)

#### Full Storage Changes

这显示了函数结束时的持久化存储。

![](/files/6fib5VQorwcQ1gThdVhJ)

## Debugger断点功能

![](/files/DgGyK0YPGko18qD4mePB)
