---
title: "debug.getupvalue"
description: "Returns one captured upvalue by 1-based index."
---

```lua
debug.getupvalue(target: function | number, index: number): any
```

---

## Aliases

- `getupvalue`

---

## Arguments

<ParamField body="target" type="function | number" required>
  The function to inspect, or a positive stack level identifying a caller.
</ParamField>

<ParamField body="index" type="number" required>
  A 1-based slot index.
</ParamField>

---

## Returns

<ResponseField name="value" type="any">
  The captured value at the selected upvalue index.
</ResponseField>

Non-positive/out-of-bounds indexes raise. Compiler choices determine upvalue layout.

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

---

## Example

```lua
local captured = {value = 1}
local function sample() return captured.value end
print(debug.getupvalue(sample, 1))
```
