2010-01-06 60 views
5

Tôi sử dụng phiên bản x64 của Windows 7. Ứng dụng của tôi sử dụng một số máy chủ COM (máy chủ COM x86 thông thường) không thể tải trong ngữ cảnh x64. Vì vậy, tôi quyết định chạy nó như một ứng dụng x86 sử dụng WOW vì vậy tôi đặt mục tiêu nền tảng là x86.Gỡ lỗi x86 Ứng dụng .NET trên Windows x64 trong VS2008

Nhưng trình gỡ lỗi Visual Studio 2008 bắt đầu hiển thị các thông báo như "Tệp nguồn khác ...." cho tất cả các tệp nguồn khi tôi thử gỡ lỗi. Lý do cho hành vi này là gì? Câu hỏi này được sinh ra ở đó "The source file is different...." message in Visual Studio 2008 is result of debugging x32 apps on x64 Windows

Cập nhật: Giải pháp làm sạch, giải pháp xây dựng lại, thư mục bị xóa, thùng rác và vv, máy tính khởi động lại, cài đặt lại Visual Studio ... Vì vậy, vấn đề khác có thể là gì?

Update2: Nếu bạn tạo dự án ứng dụng Windows mới và thay đổi nền tảng đích thành x86, bạn sẽ thấy sự cố này. Nhưng nếu bạn xóa Settings1.settings khỏi dự án, sự cố sẽ bị xóa !!. Bất kỳ ý tưởng?

UPDATE3: http://social.msdn.microsoft.com/Forums/en-US/vsdebug/thread/bc297668-65b4-46e8-969e-c7a6340d33b6

+0

Bạn có làm sạch các thư mục đầu ra của dự án và kiểm tra nhật ký xây dựng mà bản dựng thực sự thành công không? –

+0

Tôi đã trả lời trong mô tả câu hỏi. –

+0

Và nếu bạn chuyển trở lại nền tảng đích của mình thành x64, gỡ lỗi có hoạt động trở lại không? –

Trả lời

4

Windows 7 đặt chế độ tương thích Windows Xp sp 3 cho VS 2008 theo mặc định.Việc thay đổi khả năng tương thích sang chế độ Windows Vista SP2 đã giải quyết được sự cố.

+0

Đối với tôi, tính năng này cũng hoạt động cho Visual Studio 2010. – andnil

+0

Điều này làm việc cho tôi nhưng tôi đã chọn Chế độ Windows 7 Cảm ơn – Xenon

4

Thông báo lỗi bạn đang nhận được không liên quan đến gỡ một ứng dụng WOW64 bit. Nó thậm chí còn ít hơn của một vấn đề ở đây bởi vì Visual Studio chạy một quá trình 32 bit bên trong của WOW64. Vì vậy, thay vì x64 -> x86 bạn đang thực sự làm một phiên gỡ lỗi x86 -> x86.

Điều gì đang diễn ra ở đây là Visual Studio đang đọc tổng kiểm tra tệp nguồn ra khỏi PDB và nó không khớp với tổng kiểm tra các tệp bạn đang sử dụng để gỡ lỗi ứng dụng. Nguyên nhân có thể nhất cho điều này là

  • Out of date PDB của
  • Sử dụng các file nguồn không chính xác. Điều này là phổ biến hơn bạn nghĩ trong các kịch bản phân nhánh, nơi bạn có thể dễ dàng lấy phiên bản sai của tệp.

Con đường tôi thường gỡ lỗi thông qua đây là

  • Đóng VS và tự xóa tất cả các tập tin nhị phân và các thư mục nhị phân
  • Restart VS và xây dựng lại
  • Đóng VS
  • Restart VS và đính kèm vào dự án đang chạy mà không cần mở giải pháp
  • Sau đó, mở thủ công các tệp
+0

Xem Bản cập nhật của tôi 2 –

1

Bạn cũng có thể kiểm tra loại xây dựng x86. Khi bạn tạo nó, bạn có thể không được sao chép các cài đặt từ bản dựng mặc định và vì vậy không có mã nào của bạn đang xây dựng khi bạn chạy ứng dụng của mình.

Hiển thị các thuộc tính giải pháp Giải pháp và kiểm tra trang Thuộc tính cấu hình \ Configuration. Sau đó, đảm bảo tất cả các dự án đều được kiểm tra theo số Tạo cho tổ hợp Cấu hình/Nền tảng bạn đang sử dụng.

+0

Thật vậy, các dự án bị loại trừ khỏi quá trình xây dựng trong cấu hình hiện tại có vẻ là một sai lầm phổ biến đối với tôi. Tuy nhiên, tổng dung dịch sạch (như OP đã làm) sẽ khiến bạn nhận thấy điều đó? –

+0

Đúng. Nhưng anh ta bỏ qua các lỗi biên dịch/xây dựng các thông điệp mà anh ta có thể chưa thấy điều này. Ngoài ra nếu anh ta nói với nó để xây dựng một cách rõ ràng sau khi làm sạch anh ta cũng sẽ không thấy vấn đề này. –

+0

Tôi chưa tạo x86 "kiểu xây dựng", tôi vừa thay đổi mục tiêu Nền tảng trên trang Xây dựng thuộc tính dự án từ Mọi CPU thành x64. Đó là tất cả. –

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