<!--
{
  "documentType" : "article",
  "framework" : "Metal",
  "identifier" : "/documentation/Metal/metal-debugging-types",
  "metadataVersion" : "0.1.0",
  "role" : "collectionGroup",
  "title" : "Metal debugging types"
}
-->

# Metal debugging types

Create capture managers and capture scopes, and review a GPU device’s log after it runs a command buffer.

## Topics

### Frame capture

[`MTLCaptureDescriptor`](/documentation/Metal/MTLCaptureDescriptor)

A configuration for a Metal capture session.

[`MTLCaptureManager`](/documentation/Metal/MTLCaptureManager)

An instance you use to capture Metal command data in your app.

[`MTLCaptureDestination`](/documentation/Metal/MTLCaptureDestination)

The kinds of destinations for captured command data.

[`MTLCaptureScope`](/documentation/Metal/MTLCaptureScope)

A type that can programmatically customize a GPU frame capture.

### Capture errors

[`MTLCaptureError`](/documentation/Metal/MTLCaptureError)

Errors returned by capture sessions.

[`MTLCaptureErrorDomain`](/documentation/Metal/MTLCaptureErrorDomain)

The error domain for capture errors.

### Shader logs

[`MTLFunctionLog`](/documentation/Metal/MTLFunctionLog)

A log entry a Metal device generates when the it runs a command buffer.

[`MTLLogContainer`](/documentation/Metal/MTLLogContainer-swift.struct)

A collection of logged messages, created when a Metal device runs a command buffer.

[`MTLLogContainer`](/documentation/Metal/MTLLogContainer-c.protocol)

A collection of logged messages, created when a Metal device runs a command buffer.



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)