Fix: iPhone is Busy Preparing Debugger Support in Xcode

Fix: iPhone is Busy Preparing Debugger Support in Xcode

Written by

in

Quick answer: This hang occurs when Xcode extracts device support symbols or mounts the developer disk image. If it stalls for more than 10 minutes, open Window > Devices and Simulators, right-click your iPhone, choose Unpair Device, reconnect the cable, and trust the host computer again.

When connecting an iPhone or iPad to your Mac to test an app, Xcode frequently displays the status banner: iPhone is busy: Preparing debugger support for iPhone. Xcode will continue when iPhone is finished.

While this status normally resolves on its own after a few minutes, Xcode frequently hangs indefinitely, preventing you from deploying and debugging builds.

Why this happens

When a physical device running a new iOS build connects to Xcode for the first time, Xcode must prepare the device for debugging. This setup involves mounting a Developer Disk Image (DDI) on the device, verifying developer trust certificates, and copying shared framework symbols from the device to your Mac.

Symbol indexing allows LLDB to provide readable stack traces, inspect variables, and set breakpoints across system frameworks. Symbol copying occurs over the USB connection or local network and requires substantial disk read/write bandwidth.

This process stalls for several technical reasons:

  • Corrupted Device Support cache: Interrupted transfers leave incomplete symbol directories in ~/Library/Developer/Xcode/iOS DeviceSupport/ or DeveloperDiskImage caches.
  • Authentication lockouts: The iPhone is locked with a passcode, Developer Mode was toggled off, or the computer pairing certificate expired.
  • Network debugging interference: Xcode attempts to mount the debugger interface over Wi-Fi instead of a stable direct USB connection.
  • Stale usbmuxd or devicectl daemons: Background macOS services responsible for communicating with connected iOS hardware become unresponsive.

How to fix it

1. Check Progress and Wait for Initial Symbol Extraction

If this is the first time connecting this specific iOS version to this installation of Xcode, symbol extraction is expected. It can take up to 10 to 15 minutes depending on the connection speed and device model.

  1. In Xcode, navigate to Window > Devices and Simulators (or press Cmd + Shift + 2).
  2. Select your device from the left column.
  3. Check the status bar under the device name. If it shows an active progress bar with text such as Copying shared cache symbols from device, allow the operation to finish uninterrupted.
  4. Ensure the iOS device screen remains unlocked and plugged into a direct USB port rather than an unpowered hub.

2. Unpair and Re-pair the Device

If the progress bar freezes or loops without progress, refreshing the trust relationship between macOS and iOS clears stale lock states.

  1. In Xcode, stop any active run session by clicking the Stop button.
  2. Open Window > Devices and Simulators (Cmd + Shift + 2).
  3. In the left panel, control-click (right-click) your connected device and select Unpair Device.
  4. Disconnect the USB cable from your iPhone.
  5. Reconnect the cable.
  6. Unlock your iPhone. When prompted with Trust This Computer?, tap Trust and enter your passcode.
  7. In Xcode’s Devices window, confirm the device reappears. Xcode will re-initialize developer mode and mount the debugger support cleanly.

3. Clear Stale iOS DeviceSupport Files

When symbol downloading is interrupted by sleep mode or a cable disconnect, corrupt partial directories prevent Xcode from completing preparation.

  1. Quit Xcode completely (Cmd + Q).
  2. Open Terminal on your Mac.
  3. Remove the symbol cache for connected iOS devices:
rm -rf ~/Library/Developer/Xcode/iOS\ DeviceSupport/*
  1. Remove the core simulator and device staging caches:
rm -rf ~/Library/Developer/Xcode/DerivedData/*
  1. Relaunch Xcode, reconnect your device, and allow it to recreate fresh symbol files.

4. Restart Background Mobile Device Daemons

macOS runs low-level daemons to manage USB multiplexing and device control. Resetting them forces macOS to renegotiate the physical connection without rebooting your computer.

  1. Quit Xcode.
  2. Disconnect the iPhone.
  3. Run the following command in Terminal to restart the USB multiplexing service:
sudo killall -HUP usbmuxd
  1. Plug the iPhone back into your Mac, ensure it is unlocked, and reopen Xcode.

5. Re-enable Developer Mode on iOS

If device preparation stalls on modern iOS versions, the operating system’s internal developer subsystem may have suspended background debugging rights.

  1. On your iPhone, open Settings > Privacy & Security.
  2. Scroll to the bottom and tap Developer Mode.
  3. Toggle Developer Mode off, then toggle it back on.
  4. Restart the device when prompted by iOS.
  5. After unlocking the phone following reboot, tap Turn On and enter your device passcode.

How to prevent it

  • Connect directly to your Mac using a certified Apple USB-C or Lightning cable rather than through third-party multi-port hubs.
  • Uncheck Connect via network in Devices and Simulators if you experience frequent disconnects during large symbol transfers.
  • Keep your iPhone unlocked with Auto-Lock set to Never during the first deployment after a major iOS or Xcode update.
  • Avoid disconnecting the cable while Xcode displays active symbol processing in the status bar.

FAQ

Does unpairing my iPhone delete any data on the device?

No. Unpairing only revokes the cryptographic trust pairing between that specific Mac and your iOS device. None of your applications, data, or settings on the phone will be removed.

Can I bypass symbol extraction and deploy directly?

No. Xcode must mount the developer disk image and map symbol addresses before LLDB can attach to your process. Without debugger support prepared, Xcode cannot launch apps in debug mode or evaluate breakpoints.

Why does this recur every time I update iOS?

Each distinct iOS build version carries distinct system binary versions. Whenever you install an iOS point release or beta, Xcode must fetch and index the new binary signatures before debugging can resume.

Sources & credits

Parts of this guide are adapted from content licensed under CC BY-SA 4.0; this article is shared under the same license.