I've stumbled over this a few days ago and the solution is really easy, I thought I might share this with you.

When you're selecting your WatchKit App target in Xcode, it automatically attaches the debugger to the WatchKit extension like it should do. If you now want to debug + openParentApplication:reply: [1] or - better said - the code that is being executed by this function in your hosting iOS application delegate callback - application:handleWatchKitExtensionRequest:reply: [2], you have to manually attach the Xcode debugger to your iOS app's process.

Doing so is very easy: First select your WatchKit App target, compile and launch it in the simulator. Once that's done, open the iOS window of your simulator and launch your hosting iOS app. Go then back to Xcode and select Debug, Attach to Process and select the process name of your hosting iOS app from the list of running processes (it'll be most probably under likely targets).

You'll now see in the debug navigator (left-side panel, 6. tab) that the Xcode debugger is attached to both your WatchKit App extension and the hosting iOS app. By clicking on the targets in the debug navigator, you'll change the scope of Xcode's debugging features to e.g. see the correct console window or active breakpoints. As Xcode will automatically do this when a breakpoint is reached, simply set a breakpoint where you need it, and Xcode will automatically switch the debug scope once that breakpoint is reached.

Note that you have to manually attach the debugger each time you're re-launching your WatchApp target as this will kill the currently running processes in the simulator.

Hope this helps you!