2010-02-16 39 views
7

Tôi đang sử dụng VS 2008 trên máy XP 64 bit. Tôi đang gỡ lỗi một DLL C++ 32-bit thông qua một chương trình điều khiển. Các dự án DLL và EXE được chứa trong cùng một SLN để tôi có thể sửa đổi DLL khi tôi kiểm tra.Cửa sổ chương trình gỡ lỗi sẽ không đóng

Điều gì xảy ra là mỗi lần tôi giết chương trình bằng Debug | Dừng gỡ lỗi (Shift-F5). VS dừng chương trình, nhưng cửa sổ bảng điều khiển vẫn mở! Nếu tôi đang ngồi ở một điểm ngắt và nhấn Shift-F5, nó sẽ chấm dứt đúng cách, nhưng nếu chương trình đang chạy toàn nghiêng khi tôi dừng nó, tôi thường thấy điều này thay thế.

Vấn đề lớn là tôi không thể đóng các cửa sổ zombie này. Sử dụng End Task trong Task Manager không có gì (không có thông báo, không có gì). Khi tôi tắt máy, nó không thể do trẻ mồ côi và tôi phải nghỉ mát để thực sự tắt nguồn. Tôi nghĩ rằng điều này được kết nối để có dự án DLL và EXE trong cùng một SLN, như trong nhiều tháng tôi đã làm việc trên dự án này trong 2 trường hợp VS, một cho DLL và một cho EXE. Tôi sẽ liên tục nhảy qua lại giữa các cửa sổ khi tôi làm việc. Vấn đề này không bao giờ xảy ra cho đến khi tôi đưa hai dự án vào một SLN duy nhất. SLN duy nhất hoạt động tốt hơn rất nhiều, nhưng sự bất thường này rất khó chịu.

Có ý tưởng nào không?

CẬP NHẬT

Sau một chút tìm kiếm (here), tôi thấy rằng nó dường như phải làm với một trong các bản cập nhật từ thứ Ba tuần trước (KB977165 hoặc KB978037). Cảm ơn bạn Microsoft về thử nghiệm tiền phát hành tuyệt vời của bạn.

Trả lời

0

Tôi chắc chắn đã thấy những điều kỳ quặc với các chốt không được giải phóng và trình quản lý tác vụ không hoạt động đúng. Tôi đã tìm thấy rằng Process Explorer làm một công việc tốt và tìm ra những gì đang xảy ra với các cửa sổ mồ côi, ổ khóa tập tin, và thường hành vi kỳ lạ xảy ra.

0

Điều tương tự gần đây đã bắt đầu xảy ra với tôi. Tôi đang sử dụng Windows XP 32-bit, VS 2008. Tôi không nghĩ rằng điều này được kết nối với cách các dự án của bạn được tổ chức. Có lẽ một bản vá được cài đặt thông qua Windows Update đã gây ra lỗi này.

1

Cửa sổ bảng điều khiển thuộc sở hữu của csrss.exe, là một quá trình hệ thống và thực sự là quá trình duy nhất bạn không thể giết (ít nhất là trên XP, bạn có thể giết các quy trình hệ thống khác nếu bạn làm đúng thứ tự, tìm bài viết "Chạy Windows không có dịch vụ" của Mark Russinovich). Thật không may, đi xe đạp điện dường như là cách duy nhất để thoát khỏi cửa sổ giao diện điều khiển zombie.

0

Điều tốt nhất tôi đã có thể tìm thấy là một cách giải quyết: Mở cửa sổ mới ràng buộc tất cả các nút shift-F5. Bằng cách này, bạn về cơ bản phát hành cửa sổ từ trình gỡ lỗi và bạn có thể đóng cửa sổ chính nó w/o kết thúc bằng một cửa sổ cmd mồ côi. Hy vọng rằng MS sẽ đưa ra một giải pháp. Công cụ -> Tùy chọn -> Môi trường -> Bàn phím.

Bằng cách quy trình tôi mô tả ở trên chỉ hoạt động không thường xuyên. Vì vấn đề này dường như xảy ra khá thường xuyên, có cách nào để cuối cùng giải quyết nó một lần và cho tất cả?

0

Mcrosoft thừa nhận và mô tả vấn đề này, ở đây: http://support.microsoft.com/kb/982551/

Họ đã đưa ra bản vá nóng, mà bạn có thể nhận được từ: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=982551&kbln=en-us

(bạn phải cung cấp địa chỉ email, sau đó họ gửi cho bạn một trình cài đặt HotFix được bảo vệ bằng mật khẩu)

+1

Ồ, Microsoft mất 4 tháng để giải quyết vấn đề này. Bạn có thể nghĩ rằng người này sẽ đứng đầu danh sách của họ. Họ sử dụng Visual Studio trên đó, họ không? –

+0

4 tháng nhanh chóng từ M $ ... Mất 6-8 năm để khắc phục một số bảo mật quan trọng trong Internet Explorer của họ ... – Calmarius

+0

KB 982551 dường như không có tải xuống cho XP 64 bit – danio

0

Một số giải pháp tốt đã được cung cấp tại đây.

Cách khác: Thay vì dừng phiên gỡ lỗi bằng cách nhấn SHIFT-F5, nhấn CTRL-C, điều này khiến chương trình kết thúc bình thường loại bỏ nguồn của vấn đề.

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