Tôi bị nhầm lẫn như sự khác biệt giữa các trình biên dịch và mối liên kết PDB
file tương ứng (ví dụ: trong Visual Studio, Project Properties > C/C++ > Output Files > Program Database File Name
vsProject Properties > Linker > Debugging
) là gì. Tôi đã cố gắng tìm câu trả lời trực tuyến và cho đến nay tôi biết (có thể sai) rằng tệp PDB
bởi trình biên dịch được tạo cho obj
tệp trong khi tệp PDB
bởi trình liên kết được tạo cho nhị phân (exe hoặc dll) và là một được sử dụng để gỡ lỗi.tập tin biên dịch PDB và Linker PDB nộp
Nếu điều đó không đúng, vui lòng giải thích sự khác biệt. Dù bằng cách nào, phải làm gì khi tôi tạo một DLL
nơi tôi có tùy chọn để chọn tệp đầu ra PDB
cho trình biên dịch cũng như trình liên kết và phải làm gì khi tôi tạo tệp LIB mà chỉ trình biên dịch tạo tệp PDB
vì không có liên kết nào được thực hiện.
Bối cảnh: Các thư viện/dlls được sử dụng bởi một số dự án, sau đó cần
PDB
file để gỡ lỗi. Trong trường hợp tệplib
, không có sự mơ hồ vì chỉ có một tệpPDB
được tạo. Tuy nhiên, trong trường hợp củaDLL
, tôi có cần cả hai tệpPDB
để gỡ lỗi đúng cách hoặc chỉ một tệp được tạo bởi trình liên kết không?
(văn này trước khi cập nhật của bạn, nhưng nó áp dụng cho bản cập nhật cũng) Vì vậy, khi tôi tạo file 'lib' (có nghĩa là, một thư viện tĩnh), và chỉ trình biên dịch có thể tạo ra 'pdb 'tập tin kể từ khi mối liên kết không còn cần thiết, điều này có nghĩa rằng bây giờ các tập tin' pdb' được tạo ra bởi trình biên dịch là một trong những cần thiết để gỡ lỗi? – Samaursa
. Các tệp .lib không liên quan đến việc thực thi hoặc gỡ lỗi chương trình. Chúng chỉ là đầu vào cho trình liên kết. Các 'công cụ' thích hợp trong một tập tin lib hoặc là một phần của nhị phân (trong trường hợp của một thư viện tĩnh) hoặc được sử dụng để tạo các liên kết động tới các tệp DLL (trong trường hợp thư viện nhập). Trong cả hai trường hợp đó, tệp .pdb bạn cần để gỡ lỗi là tệp được tạo bởi trình liên kết khi tệp .exe hoặc .dll thực tế được tạo. –
Tuyệt vời, cảm ơn vì đã xây dựng Michael, tôi sẽ tiếp tục và kiểm tra điều này như là câu trả lời đúng. Mặc dù kể từ khi chúng tôi _are_ về chủ đề này, nếu bạn có thể trả lời câu hỏi này. Havok SDK được liên kết tĩnh và tất cả các thư viện của nó đều có các tệp 'PDB' tương ứng. Bit thú vị là, nếu bạn liên kết với các thư viện mà không có các tệp 'PDB' đi kèm chúng trong cùng một thư mục, thì Visual Studio cung cấp một tấn cảnh báo rằng' thông tin Debug bị thiếu, biên dịch như thể không có thông tin gỡ lỗi được cung cấp' (Tôi paraphrasing) – Samaursa