Внедрить информацию о символах отладки .pdb в файл .exe в Visual Studio

Я экспериментирую с инструментом анализа, который может анализировать исполняемые файлы со встроенной информацией об символах отладки в Windows. Пробуя этот инструмент в нескольких проектах с открытым исходным кодом, я понимаю, что большинство сборок не хранит символическую информацию в исполняемых файлах. Я могу скомпилировать исходный код с помощью VS (2008), но сборка обычно хранит отладочную информацию в отдельном файле .pdb, а не в файле .exe (к сожалению, я хочу только прочитать отладочную информацию из файла .exe, а не Файл .pdb :-().

Кто-нибудь знает способ встраивания отладочной информации символов в один файл .exe с помощью Visual Studio?

10
задан Ian Boyd 12 February 2012 в 16:17
поделиться

2 ответа

Я почти уверен, что PDB всегда были автономными файлами. Раньше в VC++ был переключатель, который заставлял его выдавать (ограниченную по сравнению с PDB) информацию о символах в файл «CodeView» .DBG, который по умолчанию был встроен в EXE. Однако этот переключатель больше не поддерживается в более новых (после 6.x?) версиях компилятора.

0
ответ дан 3 December 2019 в 20:39
поделиться

В Visual Studio нет встроенной поддержки для этого типа операций (по крайней мере, для управляемых языков). Файлы .PDB и .EXE создаются одновременно и не имеют возможности встраивания. Я даже не уверен, что формат .EXE поддерживает встраивание символов PDB, хотя могу ошибаться в этом вопросе.

Единственный вариант, который я вижу, это встраивание PDB в качестве ресурса в .EXE. Однако это должен быть шаг после сборки, поскольку они строятся одновременно. И существует вероятность того, что части PDB станут недействительными, если вы измените EXE-файл после его сборки.

Вы пытаетесь это сделать по какой-то особой причине? Я предполагаю, что в конечном итоге это причинит вам много боли, поскольку 1) он не поддерживается AFAIK и 2) цепочка инструментов направлена ​​​​на поиск PDB в том же каталоге, а не в .EXE. Развертывание 2 файлов поначалу немного раздражает, но на данный момент это то, как это делается.

2
ответ дан 3 December 2019 в 20:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: