---
title: "debug.setstack"
description: "Writes a register slot in a visible Lua frame."
---

```lua
debug.setstack(level: number, index: number, value: any): ()
```

---

## Aliases

- `setstack`

---

## Arguments

<ParamField body="level" type="number" required>
  The stack-frame level to inspect. See this function's frame-numbering rules below.
</ParamField>

<ParamField body="index" type="number" required>
  A verified 1-based register slot in an active Lua frame.
</ParamField>

<ParamField body="value" type="any" required>
  The replacement register value.
</ParamField>

---

## Returns

This function returns no values.

Also accepts debug.setstack(thread, level, index, value). Register positions are not stable local-variable names. Use only a verified active Lua frame.

**Related types:** [Debug types & behavior](/reference/debug/types).

---

## Example

```lua
local function inspect()
    local value = "docs-slot"
    local ok, slots = pcall(debug.getstack, 1)
    if ok and type(slots) == "table" then
        for index, item in pairs(slots) do
            if item == value then debug.setstack(1, index, item) break end
        end
    end
    print(value)
end
inspect()
```
