Открытые и закрытые символы
При сборке драйвера или другой программы символы программы обычно хранятся в файлах символов, хотя некоторые старые компиляторы хранят определенные символы в исполняемом файле. При анализе программы отладчик должен получить доступ к ее символам.
Как правило, файлы символов могут содержать любые или все из следующих символов:
Имена и адреса всех функций
Все определения типов данных, структуры и классов
Имена, типы данных и адреса глобальных переменных
Имена, типы данных, адреса и области локальных переменных
Номера строк в исходном коде, соответствующие каждой двоичной инструкции
Некоторые разработчики программ могут чувствовать себя неловко, делясь всей этой информацией со своими клиентами. BinPlace можно использовать для уменьшения количества символов в файле символов.
Некоторые базовые символы, такие как имена функций и глобальные переменные, необходимы даже для самой зачаточной отладки. Они называются общедоступными символами. Такие символы, как имена структуры данных, глобальные переменные, видимые только в одном объектном файле, локальные переменные и сведения о номерах строк, не всегда требуются для отладки, хотя они полезны для более глубокого сеанса отладки. Они называются частными символами.
Файл символов, содержащий как частные, так и открытые символы, называется полным файлом символов. Файл символов, содержащий только открытые символы, называется файлом символов с удалением.
BinPlace может создать урезаемый файл символов. Для этого создается новый файл символов, содержащий только открытые символы; закрытые символы удаляются ("удалены"). Если используются наиболее распространенные параметры BinPlace (-a -a -x -s -n), урезаемые файлы символов помещаются в каталог, указанный после параметра -s , а полные файлы символов — в каталог, указанный после параметра -n .
Когда BinPlace удаляет файл символов, урезаемые и полные версии файла получают идентичные сигнатуры и другие идентифицирующие сведения. Это позволяет использовать для отладки обе версии.
Примечание BinPlace удаляет частные символы из файла символов, если файл символов находится в том же каталоге, что и исполняемый файл, и вы указываете имя исполняемого файла (вместе с соответствующими параметрами) в командной строке BinPlace. Не следует указывать имя самого файла символов. Это приведет к перемещению файла BinPlace без изменения.
Если необходимо определить, содержит ли файл символов частные символы, можно использовать средство SymChk . SymChk входит в состав пакета Средств отладки для Windows. Дополнительные сведения см. в статье Отладка SymChk и Windows .
Если вы отправляете драйвер в программу сертификации оборудования Windows, вы можете отправить файлы символов с разделиками, если вы предпочитаете не делиться своими частными символами с корпорацией Майкрософт. Файлы символов, которые были удалены BinPlace, не предоставляют какие-либо части архитектуры драйвера, которые обычно считаются конфиденциальными. Дополнительные сведения см. в статье Программа сертификации оборудования Windows.