С что такое файл pdb. Что делать, если невозможно найти или открыть файл pdb — эффективные решения проблемы. Программы для открытия или конвертации PDB файлов
Сопоставление PDB и исполняемых файлов
- Чулан *
Как бы хорошо не работал отдел тестирования, все же часто продукт уходит пользователю с изрядным количеством ошибок. В зависимости от продукта борьба с этими ошибками ведется по разному: ведение журнала операций, взятие у пользователя проблемного проекта, выезд к пользователю и т.д.
Для борьбы с критическими ошибками, приводящими к вылету, в моей компании используется механизм автоматического снятия дампа памяти и отправки нам на сервер. Каждый дамп подвергается изучению и на основе информации полученной из дампа принимаются дальнейшие решения.
Однако для того, что бы проанализировать дамп наименьшими силами необходимы файлы отладочной информации, в частности PDB-файлы, осуществляющие обратную связь от исполняемого файла к исходникам. В общем виде PDB файлы в моей компании сохраняются в отведенной и доступное всем место.
Однако не так давно случилось так, что PDB-файлы от выпущенной версии были случайно удалены. О том как я восстанавливал отладочную информацию я и хочу рассказать.
Первое что необходимо было сделать это собрать версию из тех же исходников, что не стало проблемой (будем называть эту сборку PDB_сборкой). В результате я получил PDB файлы примерно того же содержания. Примерно, потому что бинарно они не идентичны. Гарантию того, что они будут корректны для сборки у пользователя так же нету, однако опыт отладки подсказывает что большая часть проблем при помощи полученных PDB Можно решить.
Далее мне требовалось найти способ обмануть отладчик Visual Studio и заставить загружать эти PDB (для честности надо сказать что WinDbg может загружать практически куда угодно что угодно. Для этого надо выполнить команду.symopt+0x40). Проблема здесь заключается в том, что для каждой сборки генерируется GUID, который зашивается в глубины всех исполняемых и отладочных файлов. Так же студия при загрузке проверяет отметку времени последней записи в файл, которая должна быть идентична бинарному файлу.
Поиск в интернете меня навел на утилиту ChkMach , которая позволяет подменить GUID.
На деле оказалось что утилита не смогла справиться со всеми моими PDB файлами (если PDB файл размером больше примерно 70 метров утилита отказывается его перепрошивать).
Было решено написать нечто свое, что позволило бы сделать нужные махинации.
Алгоритм получился примерно следующий:
1) Загрузить исполняемый файл из сборки ушедшей пользователю и получить из него GUID. Этот GUID надо будет записать в PDB из PDB_сборки.
2) Загрузить PDB файл из PDB_сборки.
3) Получить GUID зашитый в PDB.
4) Найти все вхождения полученного GUID в PDB и заменить их на GUID полученный в пункте 1.
Я нашел два способа получить GUID из исполняемого файла.
Первый способ - это использование интерфейсов IDia. В Visual Studio (%VSINSTALLDIR%\DIA SDK\Samples\) есть пример использования. У этого способа однако есть проблема. Если для загружаемого исполняемого файла не найден PDB-файл, то исполняемый файл загружен не будет.
Второй способ заключается в том, что бы разбирать структуру исполняемого файла самостоятельно (то есть открыть как обычный бинарный файл и читать, читать и читать). Вот есть статья посвященная поиску сегмента отладочной информации в исполняемом файле, так же есть исходник примера, которым я и пользовался. Исходного кода там получилось достаточно много и здесь его приводить не буду, так что лучше качайте исходник (ссылка в конце статьи).
Что касается пункта 2 и 3, оказалось их крайне легко решить, воспользовавшись интерфейсами IDia.
Bool LoadDataFromPdb(const wchar_t *pdbFileName,
IDiaDataSource **ppSource,
IDiaSession **ppSession,
IDiaSymbol **ppGlobal,
GUID * guid)
CoInitialize(NULL);
Hr = CoCreateInstance(__uuidof(DiaSource),
NULL,
CLSCTX_INPROC_SERVER,
__uuidof(IDiaDataSource),
(void **) ppSource);
If (FAILED(hr))
{
wprintf(L"CoCreateInstance failed - HRESULT = %08X\n", hr);
Return false;
}
Hr = (*ppSource)->loadDataFromPdb(pdbFileName);
If (FAILED(hr))
{
wprintf(L"loadDataFromPdb failed - HRESULT = %08X\n", hr);
return false;
}
Hr = (*ppSource)->openSession(ppSession);
If (FAILED(hr))
{
wprintf(L"openSession failed - HRESULT = %08X\n", hr);
return false;
}
Hr = (*ppSession)->get_globalScope(ppGlobal);
Return !FAILED((*ppGlobal)->get_guid(guid));
Поиск и замена GUID в файле, я думаю является, достаточно простой задачей, и описывать ее я не буду.
Однако стоит остановиться на одной мелочи.
Объявление структуры GUID выглядит так.
Typedef struct _GUID {
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[ 8 ];
} GUID;
В силу того, что в конечном виде этот GUID предполагалось писать как массив байтов, необходимо было учесть порядок байт, и как следствие развернуть поля Data1, Data2 и Data3
Вдохновение для статьи и поделки бралось отсюда debuginfo.com
Теги: отладка кода, отладочная информация, pdb, dump
Принято считать, что файлы pdb могут быть не только представлены в виде документов или средствами СМИ, но и быть частью системы компьютера, поэтому редко, когда обыкновенный пользователь задается вопросом, что делать, если невозможно найти или открыть файл pdb.
Важно понимать, что если файлы с расширением pdb скрыты, то лучше с ними не экспериментировать.
Определение формата pdb
Когда речь идет о расширении файла формата pdb, то сразу стоит сказать, что его применение характеризуется большим количеством способом.
Он представляет собой базу, где хранятся данные, необходимые для работы с Visual Studio или Pegasus.
Как правило, такой формат не может быть любой программой или универсальным приложением.
Кроме того, pdb необходим для Palm Desktop.
Что касается информационной базы, то она может быть совершенно разного характера.
Например: таблицы, качественные объемные изображения и прочая документальная информация. Также данный формат может служить резервной копией данных в программе PowerDesigner .
Как открыть?
На сегодняшний день известно множество способов, как открыть файл с расширением pdb.
Самый простой вариант – это кликнуть дважды на файл и тогда система компьютера самостоятельно определить программу, посредством которой можно продолжать работу.
Однако это происходит довольно редко.
В таком случае, необходимо установить программу, которая сможет решить данную задачу, которая позволит осуществить чтение или редактирование необходимой документации.
В том случае, если открытие файла все же происходит, но для этой задачи ПК выбирают неверную программу , необходимо осуществить изменение настроек в ассоциации файла .
Зачастую у любителей книг в электронном формате также возникают затруднения в открытии файла, поскольку изначально формат pdb характеризуется большим размером.
Действуем по следующей инструкции:
1 Открываем любой браузер и вводим название программы. Как правило, первыми ссылками в поисковике появляются адреса на прямого разработчика Adobe. Далее необходимо скачать программу на ПК. Чаще всего для этого нужно просто щелкнуть мышкой по названию Acrobat Reader и скачивание осуществляется в автоматическом режиме. Возможно закачку произвести и с других источников, но перед использованием и установкой на ПК, необходимо проверить источник на наличие вредоносных программ или вирусов, которые могут нанести серьезные повреждения системе. У некоторых пользователей данная программа может быть на дисках, где в приложении есть инструкция по установке
2 По завершению скачивания, кликаем на установочный файл. Чтобы инициировать процесс, необходимо согласиться со всеми требованиями лицензии и следовать простым подсказкам. Далее необходимо запустить программу. В основном меню выбираем файл с форматом pdb
3 Если в будущем планируется использовать Acrobat Reader для этого же файла, то кликаем на файл правой кнопкой мыши и находим пункт «открыть с помощью» и выбираем соответствующую программу . Если в списке ее нет, то нажимаем обзор и указываем следующий путь: Programm Files → Acrobat Reader файл формата exe. Ставим галочку напротив пункта, использовать для всех файлов данного типа
4 Зачастую такую задачу требуется решить и в смартфоне, поскольку многие пользователи привыкли пользоваться электронным форматом документов или читать книги. Важно отметить, что Acrobat Reader существует и для мобильного устройства , поэтому в зависимости от платформы (Android/IOS), можно скачать приложение
5 Существуют и альтернативные программы для выполнения данной задачи, например, Isilo0. Как правило, большинство мобильных приложений имеют вполне понятный интерфейс, поскольку они ориентированы на пользование многими людьми.
Вне зависимости от программы, алгоритм выполнения задачи остается, как правило, одним и тем же, поэтому важно обратить на альтернативные программы, которые так же помогут открыть файл формата pdb.
XnView 2.48
Поскольку объемные изображения также могут быть в формате pdb, то программа XnView 2.48 станет оптимальным вариантом для решения задач по работе с фотографиями.
С ее помощью можно выполнять обыкновенный просмотр, конвертацию или корректировку самого изображения.
Поскольку данная программа относится к разряду кроссплатформенных, то ее использование возможно абсолютно в любой системе.
Стоит отметить, что XnView 2.48 поддерживает порядком 400 других форматов фотографий и рисунков, поэтому ее выбирают многие пользователи.
С ее помощью возможность конвертировать изображения целыми пакетами.
Интерфейс не представляет каких-либо сложностей, поскольку ориентирован на широкий круг потребителей.
Если поставить курсор на определенное изображение, то сразу можно увидеть все доступные изменения, которые возможно сделать.
Что же касается отличительных особенностей, то здесь их множество:
1 Возможность бесплатного использования
2 Конвертация, как пакетная, так и единичная
3 Просмотр и обработка изображений
4 Не требует больших технических возможностей.
Calibre 2.78
Данная программа особенно покажется полезной для тех, кто имеет целые библиотеки с файлами формата pdb.
Кроме открытия файлом и возможности просмотра, Calibre 2.78 при необходимости поможет перевести документы или книги из одного формата в другой, поэтому функция мини конвертера здесь также присутствует.
Поскольку многие офисные работники приобретают ряд других электронных носителей, то с помощью программы возможно даже осуществить синхронизацию и передачу данных с одного устройства на другое.
Учитывая все достоинства Calibre 2.78, можно сделать вывод о том, что она станет оптимальным решением для людей, которые работают с документами при помощи мобильных устройств.
К основным достоинствам можно отнести следующие аспекты:
- Создание единого библиотечного каталога, в котором можно хранить архивы документов или книг, при необходимости совершать корректировку;
- Сортировать информацию в зависимости от автора, жанра и других критериев, которые может задавать пользователь в самостоятельном порядке;
- Закачка необходимых файлов в удаленном режиме, которые впоследствии отправляются на указанный электронный адрес;
- из одного формата в другой.
OpenOffice
Когда необходимо организовать процесс работы с документами формата pdb, то данная программа подойдет как нельзя лучше.
В первую очередь она имеет автоматическую функцию проверки орфографии, что существенно сэкономить время делового человека на проверке.
Основным достоинством ресурса является ее бесплатное использование, что крайне важно для большинства пользователей.
Кроме того, исходный код находится в открытом доступе, а это значит, что при необходимости внесения каких-либо изменений, их возможно сохранить и настроить работу программы в индивидуальном порядке.
Разработчики, представившие данную программу миру, вовсе не спешат останавливаться на достигнутом, поэтому часто корректируют ее и добавляют новые возможности.
С помощью данной программы возможно работать с таблицами, текстовыми документами и выполнять ряд универсальных манипуляций , без которых трудно обойтись каждому офисному работнику.
Среди существенных недостатков стоит отметить единственный аспект – это отсутствие портативного формата.
К основным достоинствам можно отнести:
- Бесплатное использование на протяжении неограниченного периода времени;
- Наличие редактора, посредством которого можно выполнить множество работ;
- Для установки не потребуется большое количество памяти или новейших технических характеристик;
- Наличие русского интерфейса.
Поскольку наличие трудностей в открытии формата pdb является довольно распространенной сложностью, то множество программ, которые появляются в сети, зачастую могут справиться с данной задачей.
Кроме того, они обладают дополнительными возможностями, поэтому для решения все универсальных действий не потребуется скачивать кучу программного обеспечения.
Объявление
Формат файлов PDB Database
Формат файлов PDB - стандартный формат баз данных, используемый на КПК Palm, Pegasus, Quicken и др. Этот формат данных позволяет хранить различные типы данных - электронные книги, документы, изображения, карты, таблицы и т.п. - в четко структурированном виде. Очень важно при этом знать, какая программа создала файл PDB, ведь правильно открыть и отобразить его можно только такой программой.
Технические сведения о файлах PDB
Файлы PDB используются языком программирования C++. В большинстве случаев это расширение используется на устройствах PalmPilote. Несмотря на то, что формат позволяет переформатировать текст, у него нет некоторых свойств и функций, которыми обладают современные форматы электронных книг (например, в файлах PDB можно создавать только простейшие таблицы). Формат PDB был разработан для устройств с небольшим объемом памяти Palm в 1990-х гг., и именно поэтому он использует технологию сжатия RLE.
Дополнительная информация о формате PDB
Расширение файла | .pdb |
Категория файлов | |
Связанные программы | ICE Book Reader Palm Reader Microsoft Visual Studio Pegasus Quicken |