In Dijkstra's Algorithm, it is standard to build up a predecessors map while executing the algorithm, setting predecessors[v] = u when the standard D[u] + length(u, v) < D[v] condition is met and that edge is relaxed. This allows you to, at the end, backtrack starting at a given target vertex, following the pointers in predecessors, to generate the shortest path from source to target.
Does the complexity of running this backtrack subroutine for all vertices come out to $O(|V|^{2})$?
If so, is there a correct way to return shortest paths from source to all other vertices which preserves Dijkstra's Algorithm's $O(|E| + |V|log|V|)$ runtime?
Or does the return format actually have to be this predecessor map itself, such that the responsibility of generating shortest paths from the predecessor map is on the consumer of the algorithm's output (and if they actually need all shortest paths from source then there's no getting around that $O(|V|^2)$, and if they only need some of the shortest paths then they can avoid grabbing all of them by only backtracking on the ones they need).