The simplest way is to use logging in your broadcast extension, then use the Console app to filter and watch for messages produced by the extension.
You can also watch the logging in Xcode:
Run your container app on the device first, to make sure the extension is installed. (This step may not be necessary, but it's the safest way to ensure that the container app has been installed on the device.)
If the app you are recording (the "client" app) is not your container app, make sure it's also installed on the device. (Note that you can deliver a broadcast extension in a container app for use by other apps. That's why there's a distinction between "container" and "client".)
Set your Xcode scheme to run the upload extension target, not your app.
Run the extension target via that scheme.
Xcode will ask you to choose a client app to run. Scroll down the list and choose the client app you previously installed. (On subsequent runs, that app will appear at the top of the list.)
Once the broadcast extension starts running, you will see its log messages in the Xcode console pane.
You can also set breakpoints in your upload extension, but blocking execution by stopping at a breakpoint may cause the broadcast to be cancelled, so this might not be a complete debugging workflow.