<type>documentation</type>
<domain>debug</domain>
<id>file-location-maps</id>
<title>File Location Maps</title>
<date>$Date$</date>
<version>$Revision$</version>
<product>per+</product>

If you are manually configuring remote debugging without using Wing Pro's
~~~if WINGPRO:
`Remote Hosts <ref:proj/remote-hosts>`__ feature,
~~~
~~~if WINGPER:
`Remote Hosts <https://wingware.com/doc/proj/remote-hosts>`__ feature,
~~~
and the full path to your source code is not the same on both hosts, then you need to
take steps to tell Wing how to determine which local files match those on a remote host.

The easiest way to do this is to add all your source code to the project in Wing. This
lets Wing discover all your files, so it can automatically build a file mapping using
hashes on their contents of the files.  If this works for you, no other configuration
is necessary.

**How it Works**

Wing uses an SHA1 hash on the first 2MB of every source file that it finds in the project
or through static analysis of all imports in your code. This is matched up to hashes
obtained from the debug process to establish file identity, and a location map is built up
automatically by looking at which directories appear to match on the local and remote
side.

If there are multiple identical local files that match a remote file, Wing will notify
you and then pick one arbitrarily.  This can usually be fixed by removing the unwanted
copies of source files from your project and restarting the debug process.

You can turn off Wing's automatic file matching by unchecking the `Debugger > Network >
Use Digests To Identify Files
<script:show_preferences_gui#prefname="debug.use-digests-to-identify-files">`__ preference
and then specifying a file location map manually, as described in the next two sections.
