2011-12-08 24 views
8

Tôi có DLL và tôi có nguồn chính xác được sử dụng để tạo DLL. Tôi muốn máy chủ biểu tượng cục bộ của chúng tôi hoạt động khi chúng tôi nhận được tệp kết xuất từ ​​khách hàng. (Cập nhật các DLL tại trang web của khách hàng không thể được thực hiện trước khi các bản vá tiếp theo/phát hành sản phẩm của chúng tôi)Có thể (tái) tạo tệp PDB sau khi DLL được tạo

+0

Bạn có cố gắng biên dịch lại tệp dll này không? – rekire

+0

Trình gỡ rối không khớp với PDB mới với tệp DLL cũ – Arve

Trả lời

6

Điều đó dường như là không thể. Có một cái nhìn lúc này đây: Why does Visual Studio require debugger symbol files to exactly match the binary files that they were built with?

Hoặc bài viết này: PDB Files: What Every Developer Must Know

Trích ra khỏi "PDB Files: Tất cả những gì ...":

Phần vô cùng quan trọng là làm thế nào các debugger biết đây là tệp PDB khớp chính xác cho tệp nhị phân này. Điều đó được thực hiện thông qua GUID được nhúng trong cả tệp PDB và tệp nhị phân. Nếu GUID không không khớp, bạn chắc chắn sẽ không gỡ lỗi mô-đun ở cấp mã nguồn .
Trình biên dịch .NET và cho trình liên kết gốc, đặt GUID này vào mã nhị phân và PDB. Kể từ khi hành động biên dịch tạo GUID này, hãy dừng lại và suy nghĩ về điều này trong giây lát. Nếu bạn đã xây dựng ngày hôm qua và đã làm không lưu tập tin PDB bạn sẽ bao giờ có thể gỡ lỗi nhị phân một lần nữa? Không! Đây là lý do tại sao nó rất quan trọng để lưu các tệp PDB của bạn cho mỗi lần xây dựng . Bởi vì tôi biết bạn đang nghĩ về nó, tôi sẽ tiếp tục và trả lời câu hỏi đã hình thành trong đầu bạn: không, không có cách nào để thay đổi GUID.

+2

Có vẻ như bạn đã đúng. Nhưng có vẻ như chkmatch có thể được sử dụng trong một số trường hợp: http://www.debuginfo.com/tools/chkmatch.html – Arve

+0

Liên kết thú vị! Ok, * thường * nó là không thể. Tôi hy vọng rằng chkmatch có thể giúp bạn. – Markus

Các vấn đề liên quan