How does Xcode communicate with an iOS device? I can plug in an iOS device and tell Xcode to run my app on that device or stop it. I can have the app paused at any time and use the debugger to debug the running app. How is this all possible? There must be some kind of a background process on iOS that acts as a liaison between Xcode and the debugger and iOS.
When you connect iPhone to Xcode and you click 'Use for Development', Xcode will download and mount DDI(Developer Disk Image). This image has DebugServer.app along other utilities that permit Xcode to perform development actions.