Подтвердить что ты не робот

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

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

Почему? Как удалить его из VС++?

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

4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

peupdate -c <module_path>