<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.10.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Swift",
  "identifier" : "/documentation/Swift/debugPrint(_:separator:terminator:to:)",
  "metadataVersion" : "0.1.0",
  "role" : "Function",
  "symbol" : {
    "kind" : "Function",
    "modules" : [
      "Swift"
    ],
    "preciseIdentifier" : "s:s10debugPrint_9separator10terminator2toyypd_S2Sxzts16TextOutputStreamRzlF"
  },
  "title" : "debugPrint(_:separator:terminator:to:)"
}
-->

# debugPrint(_:separator:terminator:to:)

Writes the textual representations of the given items most suitable for
debugging into the given output stream.

```
func debugPrint<Target>(_ items: Any..., separator: String = " ", terminator: String = "\n", to output: inout Target) where Target : TextOutputStream
```

## Parameters

`items`

Zero or more items to print.

`separator`

A string to print between each item. The default is a single
space (`" "`).

`terminator`

The string to print after all items have been printed. The
default is a newline (`"\n"`).

`output`

An output stream to receive the text representation of each
item.

## Discussion

You can pass zero or more items to the
`debugPrint(_:separator:terminator:to:)` function. The textual
representation for each item is the same as that obtained by calling
`String(reflecting: item)`. The following example prints a closed range of
integers to a string:

```
var range = "My range: "
debugPrint(1...5, to: &range)
// range == "My range: ClosedRange(1...5)\n"
```

To print the items separated by something other than a space, pass a string
as `separator`.

```
var separated = ""
debugPrint(1.0, 2.0, 3.0, 4.0, 5.0, separator: " ... ", to: &separated)
// separated == "1.0 ... 2.0 ... 3.0 ... 4.0 ... 5.0\n"
```

The output from each call to `debugPrint(_:separator:terminator:to:)`
includes a newline by default. To print the items without a trailing
newline, pass an empty string as `terminator`.

```
var numbers = ""
for n in 1...5 {
    debugPrint(n, terminator: "", to: &numbers)
}
// numbers == "12345"
```

---

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)