diff --git a/src/TulsiGenerator/BazelBuildSettingsFeatures.swift b/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
index 53f2438..32834b4 100644
--- a/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
+++ b/src/TulsiGenerator/BazelBuildSettingsFeatures.swift
@@ -13,6 +13,6 @@
 // limitations under the License.
 
 let bazelBuildSettingsFeatures = [
-  // Export dSYMs to allow us to establish source maps that can handle multiple potential paths.
-  "TULSI_ALL_DSYM",
+  // For non-distributed builds.
+  "TULSI_DEBUG_PREFIX_MAP",
 ]
diff --git a/src/TulsiGenerator/Scripts/bazel_build.py b/src/TulsiGenerator/Scripts/bazel_build.py
index 38b1cf2..4c6e2b3 100755
--- a/src/TulsiGenerator/Scripts/bazel_build.py
+++ b/src/TulsiGenerator/Scripts/bazel_build.py
@@ -188,7 +188,7 @@
   # The build configurations handled by this parser.
   KNOWN_CONFIGS = ['Debug', 'Release', 'Fastbuild']
 
-  def __init__(self, sdk_version, platform_name, arch):
+  def __init__(self, sdk_version, platform_name, arch, main_group_path):
     self.targets = []
     self.startup_options = collections.defaultdict(list)
     self.build_options = collections.defaultdict(
@@ -213,6 +213,18 @@
             ],
         })
 
+    # Options specific to debugger integration in Xcode.
+    xcode_version_major = int(os.environ['XCODE_VERSION_MAJOR'])
+    if xcode_version_major < 800:
+      xcode_lldb_options = [
+          '--copt=-Xclang', '--copt=-fdebug-compilation-dir',
+          '--copt=-Xclang', '--copt=%s' % main_group_path,
+          '--objccopt=-Xclang', '--objccopt=-fdebug-compilation-dir',
+          '--objccopt=-Xclang', '--objccopt=%s' % main_group_path,
+      ]
+      self.build_options['Debug'].extend(xcode_lldb_options)
+      self.build_options['Release'].extend(xcode_lldb_options)
+
     self.sdk_version = sdk_version
     self.platform_name = platform_name
 
@@ -497,6 +509,8 @@
 
     self.generate_dsym = (os.environ.get('TULSI_ALL_DSYM', 'NO') == 'YES' or
                           os.environ.get('TULSI_MUST_USE_DSYM', 'NO') == 'YES')
+    self.use_debug_prefix_map = os.environ.get('TULSI_DEBUG_PREFIX_MAP',
+                                               'NO') == 'YES'
     self.extra_remap_path = os.environ.get('TULSI_EXTRA_REMAP_PATH', '')
     self.remap_dotted_paths = os.environ.get('TULSI_REMAP_DOTTED_PATHS',
                                              'NO') == 'YES'
@@ -541,11 +555,6 @@
     self.xcode_version_major = int(os.environ['XCODE_VERSION_MAJOR'])
     self.xcode_version_minor = int(os.environ['XCODE_VERSION_MINOR'])
 
-    # Warn if the user is on an unsupported version of Xcode.
-    if self.xcode_version_major < 800:
-      _PrintXcodeWarning('Tulsi debugging is no longer supported for Xcode 7.')
-      _PrintXcodeWarning('Use Tulsi 0.4.185727384.20180214 for Xcode < 8.')
-
     # Path where Xcode expects the artifacts to be written to. This is not the
     # codesigning_path as device vs simulator builds have different signing
     # requirements, so Xcode expects different paths to be signed. This is
@@ -602,7 +611,8 @@
 
     parser = _OptionsParser(self.sdk_version,
                             self.platform_name,
-                            self.arch)
+                            self.arch,
+                            self.main_group_path)
     timer = Timer('Parsing options', 'parsing_options').Start()
     message, exit_code = parser.ParseOptions(args[1:])
     timer.End()
@@ -614,6 +624,27 @@
     self.bazel_bin_path = os.path.abspath(parser.bazel_bin_path)
     self.bazel_executable = parser.bazel_executable
 
+    # Use -fdebug-prefix-map to have debug symbols match Xcode-visible sources.
+    #
+    # NOTE: Use of -fdebug-prefix-map leads to producing binaries that cannot be
+    # reused across multiple machines by a distributed build system, unless the
+    # absolute paths to files visible to Xcode match perfectly between all of
+    # those machines.
+    #
+    # For this reason, -fdebug-prefix-map is provided as a default for non-
+    # distributed purposes.
+    if self.use_debug_prefix_map:
+      # Add the debug source maps now that we have bazel_executable.
+      source_maps = self._ExtractTargetSourceMaps()
+
+      prefix_maps = []
+      for source_map in source_maps:
+        prefix_maps.append('--copt=-fdebug-prefix-map=%s=%s' %
+                           source_map)
+
+      # Extend our list of build options with maps just prior to building.
+      parser.build_options[_OptionsParser.ALL_CONFIGS].extend(prefix_maps)
+
     self.build_path = os.path.join(self.bazel_bin_path,
                                    os.environ.get('TULSI_BUILD_PATH', ''))
 
@@ -710,7 +741,7 @@
     # correction applies to debug prefix maps as well.
     if self.xcode_version_major >= 800:
       timer = Timer('Updating .lldbinit', 'updating_lldbinit').Start()
-      clear_source_map = self.generate_dsym
+      clear_source_map = self.generate_dsym or self.use_debug_prefix_map
       exit_code = self._UpdateLLDBInit(clear_source_map)
       timer.End()
       if exit_code:
