Mô tả của các.Tập tin PDB và của các.DBG tập tin

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:121366
Bài viết này đã được lưu trữ. Bài viết được cung cấp "nguyên trạng" và sẽ không còn được cập nhật nữa.
TÓM TẮT
Các.Phần mở rộng PDB là viết tắt của "chương trình cơ sở dữ liệu." Nó giữ định dạng mớiđể lưu trữ thông tin gỡ lỗi đã được giới thiệu trong Visual C++Phiên bản 1.0. Trong tương lai, các.Tập tin PDB cũng sẽ tổ chức các dự án khácthông tin nhà nước. Một trong những động lực quan trọng nhất cho sự thay đổi trongđịnh dạng là cho phép gia tăng liên kết của gỡ lỗi phiên bản của chương trình, mộtthay đổi đầu tiên được giới thiệu trong Visual C++ Phiên bản 2.0.

Các.Phần mở rộng DBG là viết tắt của "gỡ lỗi." Các.DBG tập tin tạo ra với các32-bit NT toolset là ở định dạng tập tin di động tập tin thực thi (PE).Chúng chứa phần với COFF, FPO, và trong một số trường hợp Codeviewthông tin. Visual C++ trình gỡ lỗi tích hợp có thể đọc.DBG tập tin trongĐiều này định dạng, tuy nhiên nó bỏ qua phần biểu tượng COFF và trôngCodeview thông tin.

Nếu bạn cần phải xác định những gì thông tin biểu tượng được chứa trong một.DBGtập tin, bạn có thể gõ sau tại dấu nhắc lệnh:
Dumpbin sample.dbg/symbol.				
Chú ý Đường dẫn có thể cần phải bao gồm các thư mục cho Dumpbin.exe vàMSdis100.dll:
Path=%Path%;C:\Program Files\DevStudio\VC\bin;C:\Msssdk\bin				
Để biết thêm chi tiết về DUMPBIN, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
177429Ví dụ về sản lượng DUMPBIN
THÔNG TIN THÊM

Các.Tập tin PDB

Thời gian trước đó, 16-bit phiên bản của Visual C++ sử dụng.Tập tin PDB, cácgỡ lỗi thông tin được lưu trữ trong chúng được nối thêm vào cuối các.EXE hoặc.File DLL bởi linker. Trong các phiên bản của Visual C++ được đề cập ở trên,linker và trình gỡ lỗi tích hợp được cải tiến để cho phép.PDBtệp sẽ được sử dụng trực tiếp trong quá trình gỡ lỗi, do đó loại bỏsố tiền lớn của công việc cho linker và cũng bỏ qua cácrườm rà CVPACK giới hạn của các loại 64 K.

Để biết thêm chi tiết về CVPACK hạn chế, nhấp vào số bài viết sau để xem bài viết trong cơ sở kiến thức Microsoft:
112335LỖI: CK1020 hoặc CK4009 gặp phải khi thông tin loại vượt quá 64 K
Theo mặc định, khi bạn xây dựng các dự án tạo ra bởi sự Workbench trực quan, cáctrình biên dịch chuyển /Fd được sử dụng để đổi tên các.Tập tin PDB để <project>.PDB.Vì vậy, bạn sẽ chỉ có một.Tập tin PDB cho toàn bộ dự án.</project>

Khi bạn chạy makefiles đó đã không được tạo ra bởi sự Workbench thị giác, và/Fd không được sử dụng với /Zi, bạn sẽ kết thúc với hai.Tập tin PDB:
  • VCx0.PDB (nơi "x" là phiên bản chính của tương ứng Visual C++, hoặc "2" hoặc "4"), mà các cửa hàng tất cả các thông tin gỡ lỗi Đối với cá nhân.OBJ tệp. Nó nằm trong thư mục nơi các dự án makefile cư trú.
  • <project>.PDB, mà các cửa hàng tất cả các thông tin gỡ lỗi cho các kết quả .EXE file. Nó nằm trong thư mục con \WINDEBUG.</project>
Tại sao hai tập tin? Khi trình biên dịch được điều hành, nó không biết tên của các.EXE tập tin vào đó các.OBJ tệp sẽ được liên kết, do đó, trình biên dịch có thể khôngđặt thông tin vào <project>.PDB. Hai tập tin lưu trữ khác nhauthông tin. Mỗi khi bạn biên dịch một.OBJ tập tin, trình biên dịch hòa trộn cácthông tin gỡ lỗi vào VCX0.PDB. Nó không đặt trong thông tin biểu tượngchẳng hạn như định nghĩa chức năng. Nó chỉ đặt trong thông tin liên quan đến các loại.Một lợi ích của điều này là khi mọi tập tin nguồn bao gồm tiêu đề phổ biếntác phẩm như <windows.h>, tất cả các typedefs từ các tiêu đề là chỉlưu trữ một lần, thay vì trong mỗi.OBJ tệp.</windows.h></project>

Khi bạn chạy linker, nó tạo ra <project>.PDB, giữ cácthông tin gỡ lỗi cho các dự án.EXE file. Tất cả các lỗithông tin, bao gồm cả nguyên mẫu chức năng và mọi thứ khác, được đặtvào <project>.PDB, không chỉ loại thông tin tìm thấy tại VCX0.PDB. Cáchai loại số.Tập tin PDB chia sẻ cùng một phần mở rộng bởi vì họ làkiến trúc tương tự; cả hai đều cho phép gia tăng Cập Nhật. Tuy nhiên,họ thực sự lưu trữ thông tin khác nhau.</project></project>

Trình gỡ lỗi Visual C++ mới sử dụng <project>.Tập tin PDB tạo ra bởi cácLinker trực tiếp, và embeds đường dẫn tuyệt đối để các.PDB trong các.EXE hoặc.DLL file. Nếu trình gỡ lỗi không thể tìm thấy các.Tập tin PDB tại vị trí đó hoặc nếuđường dẫn không hợp lệ (nếu, ví dụ, dự án đã được dời đến khácmáy tính), trình gỡ lỗi tìm nó trong thư mục hiện hành.</project>

Các.DBG tập tin

Trình gỡ lỗi Visual C++ tích hợp cũng có thể sử dụng.DBG tập tin miễn làchúng được làm từ một chứa Codeview dạng nhị phân gỡ lỗi đầu ra.Đây là hữu ích để gỡ lỗi khi mã nguồn không có sẵn. Thậm chímà không có nguồn gốc.DBG tập tin cho phép bạn thiết lập điểm ngắt vào chức năng,xem các biến, và xem các chức năng trong ngăn xếp cuộc gọi. Chúng cũng làyêu cầu cho OLE RPC gỡ lỗi.

Một caveat cần phải được chỉ ra: khi làm việc với các biểu tượng từ một.DBGtệp, bạn phải sử dụng tên đầy đủ trang trí. Ví dụ, để thiết lập mộtbreakpoint ngày một cuộc gọi đến chức năng sndPlaySound Windows, bạn sẽchỉ định _sndPlaySoundA@8 theo vị trí.

Có thực sự hai.Định dạng tập tin DBG. Các định dạng cũ đã tồn tại trongkhá trong một thế giới 16-bit. Ví dụ, bởi vì các định dạng của.COMtập tin là một hình ảnh đơn giản nhị phân được tải vào bộ nhớ, gỡ lỗi Codeviewthông tin không được nối vào cuối của tập tin vì tệpKích thước có thể vượt quá giới hạn 64 K cho một.COM tệp. Do đó tượng trưngthông tin thay vào đó đã được đưa vào một riêng biệt.Tập tin DBG, vốn chỉCodeview thông tin trong nó. Các.DBG tập tin cũng có thể được tạo ra bởichạy CVPACK trên một.EXE tập tin bằng cách sử dụng tùy chọn /strip.

Cho 32-bit.Emerge, Visual C++ Phiên bản 2.x và biểu tượng 4.x trình gỡ lỗixử lý không đọc các định dạng cũ. Thay vào đó, nó đọc các định dạng được sử dụng trongWindows NT.DBG tập tin, được cung cấp để sử dụng với hệ thống của nó.Tập tin DLL.Đây.DBG tập tin có định dạng tập tin di động tập tin thực thi (PE) vàchứa phần với COFF, FPO, và trong một số trường hợp Codeview tượng trưngthông tin. Trình gỡ lỗi Visual C++ mới lần đọc.DBG tập tin trong định dạng nàychỉ. Hơn nữa, nó chỉ sử dụng thông tin Codeview, bỏ qua cácphần biểu tượng khác.

Có thể dải thông tin gỡ lỗi từ một tập tin PE và cất giữ nó trong một.DBG tập tin để sử dụng bởi debuggers. Để làm việc này, trình gỡ lỗi cầnbiết hay không để biết thông tin gỡ lỗi trong một tập tin riêng biệt hay không vàliệu các thông tin đã được tước từ các tập tin hay không. Một phương phápsẽ cho trình gỡ lỗi để tìm kiếm thông qua tập tin thực thi, tìm kiếmgỡ lỗi thông tin. Tuy nhiên, để lưu trình gỡ lỗi từ việc tìm kiếm cáctập tin, một lĩnh vực đặc trưng tập tin (IMAGE_FILE_DEBUG_STRIPPED) đã được phát minhmà chỉ ra rằng các tập tin đã bị tước. Debuggers có thể nhìn nàytrường trong tiêu đề tập tin PE để nhanh chóng xác định liệu việc gỡ lỗithông tin là hiện diện trong các tập tin hay không.

Để tạo ra một.DBG tập tin trong định dạng này, bạn có thể sử dụng REBASE.EXE, đó làcung cấp Win32 SDK. Xin vui lòng xem tài liệu Win32 SDK chothêm chi tiết.

Trong thời gian xây dựng bán lẻ Windows NT, ký hiệu gỡ lỗi là tước từ cáchệ thống tập tin nhị phân và trình điều khiển và được lưu trữ trong riêng biệt.DBG tập tin. Điều này được thực hiệnbởi vì trình gỡ lỗi hạt nhân Windows NT có thể sử dụng này.DBG tập tin và cung cấpgỡ lỗi biểu tượng ngay cả đối với trình điều khiển tối ưu hóa. Hãy nhớ rằng, tuy nhiên, rằng cácVisual C++ tích hợp trình gỡ lỗi không được thiết kế để gỡ lỗi chế độ được bảo vệMã kernel.

Windows NT biểu tượng tập tin có thể được tìm thấy trong thư mục con gỡ lỗi của các\SUPPORT thư mục trên đĩa CD-ROM bán lẻ Windows NT. Những tập tin này phảisao chép từ đĩa CD-ROM ổ cứng của bạn. Đối với người sử dụng chế độ gỡ lỗi vào cácmục tiêu trình gỡ lỗi máy.DBG biểu tượng phải có mặt trong Windows NT\<winnt>Thư mục \SYMBOLS của hệ thống đích (<winnt> là thư mục»nơi Windows NT được cài đặt). Cài đặt mới chương trình cài đặt Visual C++biểu tượng "NT hệ thống biểu tượng thiết lập" trong nhóm chương trình của bạn. Bạn có thể sử dụng nó đểtự động sao chép các.DBG tập tin từ đĩa CD-ROM máy trạm Windows NT của bạnđĩa để cấu trúc thư mục chính xác trên ổ cứng của bạn. Phương pháp nàykhông làm việc cho Windows NT Server 4.0 CD-ROM vì các.DBG tập tinđược lưu trữ ở định dạng nén.</winnt></winnt>

Để gỡ lỗi hạt nhân, nơi.DBG tập tin vào một cây biểu tượng bên dưới cácthư mục được chỉ ra bởi các biến môi trường _NT_SYMBOL_PATH (choVí dụ, C:\DEBUG\SYMBOLS). Gỡ lỗi hạt nhân có thể với một tập tối thiểubiểu tượng bao gồm các biểu tượng cho tất cả các trình điều khiển (*.SYS) trong cácSYMBOLS\SYS thư mục, và các biểu tượng cho NTOSKRNL.EXE và HAL.DLL trong cácThư mục SYMBOLS\EXE và SYMBOLS\DLL, tương ứng. Để biết thêm thông tinngày gỡ lỗi hạt nhân, đề cập đến các cuộc thảo luận liên quan đến hạt nhân gỡ lỗi trongWindows NT DDK Programmer's Guide.

Trong khi nó là lý thuyết có thể để chuyển đổi từ một.Tập tin PDB quay lại một.DBG tập tin, nó không phải là một nhiệm vụ tầm thường. Tại thời điểm này, chúng tôi biết không có công cụ như vậy.Nếu chúng tôi nghe về công cụ như vậy, chúng tôi sẽ cập nhật bài viết này trong MicrosoftKiến thức cơ sở.
kbDebug kbTools kbVC200 kbVC210 kbVC400 kbVC500

Cảnh báo: Bài viết này được dịch tự động

Thuộc tính

ID Bài viết: 121366 - Xem lại Lần cuối: 12/04/2015 10:35:09 - Bản sửa đổi: 2.0

Microsoft Visual C++ 2.1, Microsoft Visual C++ 4.0 Standard Edition

  • kbnosurvey kbarchive kbbug kbdebug kbide kbinfo kbmt KB121366 KbMtvi
Phản hồi