Files
swift-mirror/tools/swift-inspect
Mike Ash 7b32ffe601 [swift-inspect] Limit number of jobs printed on an actor.
If we encounter bad data in the target, we could end up trying to print an infinite list of jobs. Clamp it to 1,000 so we fail more gracefully.

rdar://113417637
2023-08-07 16:43:15 -04:00
..

swift-inspect

swift-inspect is a debugging tool which allows you to inspect a live Swift process to gain insight into the runtime interactions of the application.

swift-inspect uses the reflection APIs to introspect the live process. It relies on the swift remote mirror library to remotely reconstruct data types.

Building

swift-inspect can be built using swift-package-manager.

Windows

In order to build on Windows, some additional parameters must be passed to the build tool to locate the necessary libraries.

swift build -Xcc -I%SDKROOT%\usr\include\swift\SwiftRemoteMirror -Xlinker %SDKROOT%\usr\lib\swift\windows\x86_64\swiftRemoteMirror.lib

Using

The following inspection operations are available currently.

All Platforms
dump-arrays <name-or-pid>
Print information about array objects in the target
dump-cache-nodes <name-or-pid>
Print the metadata cache nodes.
dump-conformance-cache <name-or-pid>
Print the content of the protocol conformance cache.
dump-generic-metadata <name-or-pid> [--backtrace] [--backtrace-long]
Print generic metadata allocations.
dump-raw-metadata <name-or-pid> [--backtrace] [--backtrace-long]
Print metadata allocations.
Darwin Only
dump-concurrency <name-or-pid>
Print information about tasks, actors, and threads under Concurrency.