Добавил:
github.com Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Технология программирования / 2_1_otladka_v_konsoli_30_08_19_-_2_Chasa.doc
Скачиваний:
4
Добавлен:
30.09.2023
Размер:
3.56 Mб
Скачать

Что такое файл .Pdb?

Когда отладчик активируется с включенной опцией Use Program Database, во время постройки генерируется дополнительный файл. Он позволяет Visual C++ производить инкрементную компоновку отладочных версий программы. Сегодняшние версии программы позволяют как компоновщику, так и интегральной среде работать не­посредственно с файлами .pdb.

Visual C++ будет генерировать только один выходной .pdb-файл. Однако если запустить shake-файл, который создавался не в Microsoft Visual C++, обнаружатся два таких файла:

  1. Один, VCxO.pdb (где вместо х нужно подставить номер текущей версии Visual C++), содержит отладочную информацию из всех отдельных объектных модулей (.obj).

Файл VCxO.pdb создается потому, что компилятор не знает имени конечно­го исполняемого модуля. Какие для его генерации требуются файлы .obj, тоже не ясно до того момента, когда будет запущен компоновщик, поэтому инфор­мация временно записывается в VCxO.pdb. Компилятор дописывает в его ко­нец отладочную информацию всякий раз, когда он генерирует очередной .obj-файл.

VCxO.pdb содержит всю информацию о типах программы, но в нем нет никакой информации о символах. Это дает определенные преимущества, ко­гда приложение подключает стандартные заголовочные файлы вроде win­dows.h. Поскольку VCxO.pdb не содержит информации о символах, отдельные .obj-файлы не будут нести избыточного ее объема для дублированных win­dows.h.

  1. Второй созданный файл будет иметь имя project_пате.pdb. Он содержит всю отладочную информацию для файла project_пате.ехе и находится в каталоге \WINDEBUG.

Файл project_name.pdb генерируется на этапе компоновки. Он содержит от­ладочную информацию для конечного .exe-файла проекта. Файл project naте.pdb объединяет всю необходимую информацию, в том числе прототипы функций. Два рода файлов .pdb имеют одинаковое расширение потому, что они сходны по своей архитектуре и оба допускают инкрементное обновление. Компоновщик вставляет в .ехе или .dll ссылку на местоположение файла. От­ладчик может найти этот файл, если маршрут и имя программы изменятся. В этом случае для поиска файла .pdb он просмотрит текущий каталог по умол­чанию.

Что такое файл .Dbg?

Последний выпуск Visual C++ позволяет окнам дизассемблера и стека вы­зовов расшифровывать декорирующую часть имен C++. Теперь вы можете видеть имена C++ с корректным списком аргументов. Файлы .dbg, созданные 32-битными инстру­ментальными средствами NT, имели разделы с информацией COFF или Code­View. Отладчик может читать оба эти типа файлов; однако он игнорирует раз­дел COFF и ищет только информацию Codeview.

Когда исходный код недоступен, отладчик все же может воспользоваться .dbg-файлами в том случае, если они состоят из двоичных отладочных записей формата Codeview. Даже без исходного кода вы, благодаря файлам .dbg, може­те устанавливать контрольные точки, наблюдать переменные и просматривать стек вызовов.

Поиск ошибок рабочей версии в отладочной

Некоторые дефекты проявляются, только когда вы переходите к оконча­тельной версии (/01, /02, /Ох или /Оg). Вы можете включить опцию /GZ, что­бы разрешить проверки времени выполнения и перехватить возникающие ошибки в отладочной версии (/Od). Опция /GZ несовместима с 01, /02, /Ох или /Og (она отключит все директивы #pragma optimize в вашей программе). Когда вы указываете /GZ, Visual C++ будет автоматически инициализировать все локальные переменные, проверять корректность стека вызовов указателей и корректность стека вызовов.