Câu hỏi Tại sao Visual Studio 2010 không thể tìm / mở các tệp PDB?


Tôi đang cố gắng sử dụng OpenCV trong VS 2010. Tôi là một người nghiệp dư, và tôi đang học những bước đầu tiên từ wiki OpenCV. Tuy nhiên, khi cố gắng gỡ lỗi dự án của tôi, tôi nhận được các lỗi sau:

'C: \ Windows \ SysWOW64 \ ntdll.dll', Không thể tìm hoặc mở tệp PDB   'C: \ Windows \ SysWOW64 \ kernel32.dll', Không thể tìm hoặc mở tệp PDB   'C: \ Windows \ SysWOW64 \ kernellbase.dll', Không thể tìm hoặc mở tệp PDB

Tôi có những tệp đó trong đúng thư mục, vậy tại sao nó không thể mở chúng? Tôi nên làm gì để khắc phục sự cố?


76
2018-01-27 08:03


gốc


Bạn có ý nghĩa gì với "trong đúng thư mục"? PDB có nằm trong cùng thư mục với DLL không? - harper
@harper: Xem xét các thư viện được đề cập là các tệp hệ thống Windows, các PDB có thể không được cho là nằm trong cùng thư mục với DLL. Các tệp DLL nằm trong thư mục C: \ Windows \ SysWOW64, nhưng các ký hiệu PDB có thể nằm trong thư mục bộ nhớ cache biểu tượng được thiết kế của bạn. Một trong những bạn chỉ định trong các tùy chọn gỡ lỗi Visual Studio. - Cody Gray♦
@Cody Grey: Bạn có thể sao chép PDB vào thư mục (theo cách thủ công) hoặc bạn được yêu cầu sử dụng Máy chủ biểu tượng của Microsoft (Nguồn) không? - harper
@harper: Tôi không có ý tưởng nếu nó sẽ làm việc theo cách đó. Tôi không chắc chắn nếu Visual Studio sẽ tìm thấy các biểu tượng PDB ở đó (mặc dù tôi tưởng tượng rằng nó sẽ). Tuy nhiên, theo như giấy phép đi, tôi khá chắc chắn rằng bạn phải sử dụng máy chủ biểu tượng của MS. Làm thế nào khác bạn sẽ có được các tập tin PDB? Tôi cũng không chắc tại sao bạn muốn tẩy chay điều này. Visual Studio có tất cả các chức năng này được xây dựng trong, vậy tại sao không tận dụng lợi thế của nó? Nó được thiết kế để lưu vào bộ nhớ cache các biểu tượng cục bộ, do đó bạn không phải tải lại chúng mỗi lần. Tôi thậm chí không nhận thấy nó xảy ra nữa. - Cody Gray♦
@ Gray Grey: Tôi không muốn tẩy chay bất cứ điều gì. Tôi thậm chí không có những PDB này. Nhưng tôi tò mò làm thế nào nó hoạt động. - harper


Các câu trả lời:


Đầu tiên thay đổi các thông số sau:

Công cụ -> Tùy chọn -> Gỡ lỗi -> Ký hiệu -> Máy chủ -> Có

Sau đó nhấn Ctrl+F5 và bạn sẽ thấy những điều tuyệt vời.


118
2017-11-15 15:12



Wow! Điều đó thật tuyệt! Cảm ơn bạn vì câu trả lời này. +1 cho bạn! - Matthew Crews
Chỉ cần được rõ ràng, điều này sẽ chỉ tải về các biểu tượng một lần phải không? Nó sẽ không ngăn cản tôi làm việc ngoại tuyến? - Seanny123
Bạn có biết một liên kết trực tiếp để tải xuống không? Tôi đang làm việc trong một mạng kín mà không cần truy cập internet. - levkaster
Thật tuyệt vời, nhưng nó hoạt động như thế nào? Tôi muốn tìm hiểu một số điều này - Alexander Leon VI
Euhm ... Điều khiển F5 không đính kèm trình gỡ lỗi AFAIK. Vì vậy, câu trả lời này là thiếu điểm. - buckley


Tôi khá chắc chắn đó là cảnh báo, không phải lỗi. Dự án của bạn vẫn chạy tốt.

Tuy nhiên, vì bạn nên luôn cố gắng sửa chữa các cảnh báo trình biên dịch, hãy xem những gì chúng ta có thể khám phá. Tôi không quen thuộc với OpenCV, và bạn không liên kết đến hướng dẫn wiki mà bạn đang theo dõi. Nhưng có vẻ như vấn đề là bạn đang chạy phiên bản Windows 64 bit (được minh chứng bằng thư mục "SysWOW64" trong đường dẫn đến các tệp DLL), nhưng những thứ OpenCV mà bạn đang cố gắng xây dựng cho nền tảng 32 bit. Vì vậy, bạn có thể cần phải xây dựng lại dự án bằng CMake, như đã giải thích đây.

Cụ thể hơn, các tệp được liệt kê là các tệp hệ thống Windows. Các tệp PDB chứa thông tin gỡ lỗi mà Visual Studio sử dụng để cho phép bạn bước vào và gỡ lỗi mã đã biên dịch. Bạn không thực sự cần các tệp PDB cho các thư viện hệ thống để có thể gỡ lỗi mã của riêng bạn. Nhưng nếu bạn muốn, bạn có thể tải xuống các biểu tượng cho các thư viện hệ thống. Đi tới trình đơn "Gỡ lỗi", nhấp vào "Tùy chọn và cài đặt" và cuộn xuống hộp danh sách ở bên phải cho đến khi bạn thấy "Bật hỗ trợ máy chủ nguồn". Đảm bảo rằng tùy chọn được chọn. Sau đó, trong thanh tre bên trái, nhấp vào "Ký hiệu", và đảm bảo rằng tùy chọn "Microsoft Symbol Servers" được chọn. Bấm OK để loại bỏ hộp thoại, và sau đó thử xây dựng lại.


20
2018-01-27 08:33



Cố gắng này vẫn không hoạt động. - daveomcd
Tôi không chắc mình phải nói gì để đáp lại điều đó. Bạn đang tìm kiếm thêm trợ giúp? Hay bạn chỉ để lại một bình luận? Bởi vì nếu bạn đang tìm kiếm thêm trợ giúp, bạn sẽ phải giải thích những gì chính xác đã đi sai khi bạn "cố gắng này" và những gì bạn có nghĩa là "không làm việc". Chúng tôi là tất cả các lập trình viên, bạn biết đó không phải là cách báo cáo lỗi hữu ích được đệ trình. - Cody Gray♦
Xin lỗi vì lý do nào đó mà toàn bộ tin nhắn của tôi không được dán. Nhưng kể từ đó tôi đã sửa nó bằng cách sử dụng phương pháp sau đây. stackoverflow.com/questions/1468726/… - daveomcd


Visual Studio Community Edition 2015

Đã có lỗi này cả ngày. Cuối cùng tôi đã sửa nó bằng cách vào Tools> Import and Export Settings> Reset tất cả các tùy chọn> Reset General Settings.

Khi nó được thiết lập lại, vào Tools> Options> Debugging> Symbols> - Sau đó chọn hộp bên cạnh Microsoft Symbol Servers.

Chạy ứng dụng của bạn trong chế độ gỡ lỗi, và nó sẽ mở ra các cửa sổ nói rằng nó đang tải về các biểu tượng cho một loạt các tập tin .dll khác nhau. Hãy để nó kết thúc việc này.

Khi nó hoàn thành, nó sẽ hoạt động trở lại.


7
2018-04-02 17:33





Tôi đã từng gặp vấn đề tương tự. Nó chỉ ra rằng, biên soạn một dự án tôi nhận được từ người khác, tôi đã không thiết lập dự án StartUp chính xác (nhấp chuột phải vào dự án khởi động mong muốn trong trình thám hiểm giải pháp và chọn "thiết lập như dự án khởi động"). Có lẽ điều này sẽ giúp, cổ vũ.


3
2018-02-21 12:51





Dành cho VS2013người dùng tìm thấy chính mình ở đây như tôi đã làm:

Tools -> Options -> Debugging -> Symbols

Bạn sẽ thấy rằng Cache symbols in this directory: trường trống; bạn có thể duyệt / nhập đường dẫn chính mình hoặc chỉ cần tiếp tục và nhấp vào Load all symbols nút. Một cửa sổ cảnh báo sẽ xuất hiện nói rằng "Vì bạn chưa chọn thư mục bộ nhớ cache biểu tượng, mặc định sẽ được sử dụng". Bây giờ bạn sẽ thấy C:\Users\XXXX\AppData\Local\Temp\SymbolCache trong trường đường dẫn trống trước đó. Nhấp chuột Load all symbols lần thứ hai và bạn nên được thiết lập. Lượt ok, và chỉ vì lợi ích của siêng năng, sạch sẽ và xây dựng lại giải pháp của bạn.


2
2018-06-01 17:05





Đề cập đến thread đầu tiên / khả năng khác VS không thể mở hoặc tìm tập tin pdb của quá trình này là khi bạn có thực thi của bạn đang chạy trong nền. Tôi đã làm việc với mpiexec và chạy vào vấn đề này. Luôn luôn kiểm tra trình quản lý tác vụ của bạn và giết bất kỳ quá trình exec nào mà bạn sẽ xây dựng trong dự án của mình. Một khi tôi đã làm điều đó, nó sửa lỗi hoặc xây dựng tốt.

Ngoài ra, nếu bạn cố gắng tiếp tục cảnh báo, các điểm ngắt sẽ không bị tấn công và nó sẽ không có tệp thực thi hiện tại


1
2017-07-12 22:49





Tôi đã tìm thấy rằng những lỗi này đôi khi là từ thiếu quyền khi biên soạn một dự án - vì vậy tôi chạy như là quản trị viên để làm cho nó hoạt động đúng.


0
2018-03-31 15:27