Searching for the Debug Files
If theTV::gnu_debuglink variable is true and if an image file contains either a .note.gnu.build-id or a .gnu_debug_link section, TotalView searches for a separate debug information file that matches the image file. TotalView will first search for the debug file using the .note.gnu.build-id section in the image file, if it exists. If that search fails, TotalView will search for the debug file using the .gnu_debuglink section in the image file, if it exists.
For the build ID method:
1. The TV::gnu_debuglink_build_id search_path string is split at the colon (:) characters into a list of strings.
2. For each string on the list, "%D", "%G", and "%/" token expansion is performed to yield a list of directory names to search.
3. The list of directories is searched for the debug file path named by the .note.gnu.build-id section. The debug file path follows the pattern ".build-id/xx/yyy...yyy.debug", where xx are the first two hex characters of the build ID bit string, and yyy...yyy is the rest of the bit string. Build ID bit strings are at least 32 hex characters.
For separate debug files referenced by a .gnu_debuglink section:
1. The TV::gnu_debuglink_search_path string is split at the colon (:) characters into a list of strings.
2. For each string on the list, "%D", "%G", and "%/" token expansion is performed to yield a list of directory names to search.
3. The list of directories is searched for the debug file named in the .gnu_debuglink section. If the file is found, and the checksum matches or TV::gnu_debuglink_checksum is false, then the debug file is used.
For example, assume that the program’s pathname is /A/B/hello_world and the debug filename stored in the .gnu_debuglink section of this program is hello_world.debug. If the TV::gnu_debuglink_global_directory variable is set to /usr/lib/debug and the TV::gnu_debuglink_search_path is set to its default value, TotalView searches for the following files:
1. /A/B/hello_world.debug
2. /A/B/.debug/hello_world.debug
3. /usr/lib/debug/A/B/hello_world.debug