Удалить ссылки PDB из выпущенного файла

Я использую, чтобы всегда смотреть на финальный исполняемый файл или dll после отладки и создания файла с любой IDE. Теперь я пытаюсь Visual C ++ 2010, в поисках лучшей версии, без мусора или ненужных ссылок. Итак, я создал новое решение с двумя проектами: исполняемый файл и его dll. VC ++ создал много промежуточных файлов между кодом и окончательным файлом. Я открыл файл .exe и .dll с шестнадцатеричным редактором и увидел что-то, что мне не нравится. Где-то внутри файла есть абсолютный путь к файлу .PDB.

Зачем? Как удалить его из VC ++?

Для этого должна быть какая-то предварительная команда. Каково использование абсолютного пути к файлу .PDB, например «D: My Projects Project1 Release Project1.pdb» внутри двоичного файла файла, который будет распространяться на компьютерах с разными папками? Кроме того, мне не нравится видеть один из маршрутов моего диска, сохраненный внутри двоичного файла, который я хочу поделиться с другими людьми. Я в режиме Release, я не вижу использования этой ненужной информации. Как я могу удалить его? Благодаря!

visual-c++,reference,release,pdb,

13

Ответов: 3


8 принят

Прочитайте документацию PDB-файлов в MSDN:

Файл базы данных программы (PDB) содержит отладочную информацию и информацию о состоянии проекта, которая позволяет инкрементно связывать конфигурацию Debug вашей программы. Файл PDB создается при компиляции программы C / C ++ с / ZI или / Zi или программой Visual Basic / C # / JScript .NET с / debug.

В Visual C ++ параметр / Fd указывает файл PDB, созданный компилятором. Когда вы создаете проект в Visual Studio с помощью мастеров, параметр / Fd устанавливается для создания PDB с именем project.PDB.

Обратите внимание, что абсолютный путь указан в документации:

Отладчик Visual Studio использует файл project.PDB, созданный компоновщиком напрямую, и вставляет абсолютный путь к PDB в EXE или DLL-файле.

Вы всегда можете перейти в «Свойства проекта»> «Компоновщик»> «Отладка»> «Создать отладочную информацию» и установить его в «Нет».


10

Вы можете использовать /pdbpath:noneдля удаления полного имени пути к файлу PDB, но сохраните только имя и расширение PDB. Сохранение имени (и расширения) PDB для выпущенных изображений является единственным способом отладки изображения, которое является ошибкой. Изображения Windows почти всегда содержат имя и расширение PDB!


2

Если вы не возражаете против использования внешнего инструмента, и вы не можете перестроить свой модуль с помощью / pdbpath: none, инструмент peupdate можно использовать для отображения, удаления или изменения строки PDB в исполняемом модуле:

http://bytepointer.com/tools/index.htm#peupdate

Вы можете использовать инструмент следующим образом, чтобы очистить путь PDB:

peupdate -c <module_path>
зрительно-C ++, ссылки, релиз, PDB,
Похожие вопросы