Поделиться через


Использование исходных файлов

Подсистема отладчика поддерживает исходный путь, который представляет собой список каталогов и исходных серверов, содержащих файлы исходного кода, связанные с текущими целевыми объектами. Отладчик может выполнять поиск исходных файлов в этих каталогах и исходных серверах. С помощью файлов символов обработчик отладчика может сопоставлять строки в исходных файлах с расположениями в памяти целевого объекта.

Общие сведения об использовании исходных файлов с отладчиками см. в разделе Отладка в исходном режиме. Общие сведения об исходных путях см. в разделе Исходный путь. Общие сведения об использовании исходных серверов из подсистемы отладчика см. в разделе Использование исходного сервера.

Исходный путь

Чтобы добавить каталог или исходный сервер в исходный путь, используйте метод AppendSourcePath. GetSourcePath возвращает весь исходный путь и может быть изменен с помощью SetSourcePath. Один каталог или исходный сервер можно получить из исходного пути с помощью GetSourcePathElement.

Чтобы найти исходный файл относительно исходного пути, используйте FindSourceFile или, для более сложных параметров при использовании исходных серверов, используйте FindSourceFileAndToken. FindSourceFileAndToken также можно использовать вместе с GetSourceFileInformation для получения переменных, связанных с файлом на исходном сервере.

Сопоставление исходных файлов с кодом в памяти

Подсистема отладчика предоставляет три метода для поиска расположений памяти, соответствующих строкам в исходном файле. Чтобы сопоставить одну строку исходного кода с расположением в памяти, используйте GetOffsetByLine. Для поиска расположений памяти для нескольких исходных строк или близлежащих исходных строк используйте GetSourceEntriesByLine. Метод GetSourceFileLineOffsets возвращает расположение памяти каждой строки в исходном файле.

Чтобы выполнить противоположную операцию и найти строку исходного файла, соответствующую расположению в памяти целевого объекта, используйте GetLineByOffset.

Примечание Связь между расположениями памяти и строками в исходном файле не обязательно является "один к одному". Одна строка исходного кода может соответствовать нескольким расположениям в памяти, а одна — нескольким строкам исходного кода.