2011-09-14 36 views
9

Ok, tôi đã nhận chương trình C++ đa luồng này mà tôi cố gắng gỡ lỗi trong Visual Studio 2008.Làm cách nào để tôi có thể tạo Visual Studio ngay trước khi chương trình dừng?

Đôi khi (thường là sau một hoặc hai giờ tính toán), chương trình dừng lại, thoát khỏi chế độ gỡ lỗi sau viết trong cửa sổ gỡ lỗi:

The thread 'Win32 Thread' (0x1560) has exited with code 3 (0x3). 
The thread 'Win32 Thread' (0x5fc) has exited with code 3 (0x3). 
... 

Và cứ như vậy cho tất cả các chủ đề liên quan.

Mã thoát AFAIK 3 cho biết lỗi của thứ gì đó, tôi mong VS sẽ chặn ngoại lệ và ngắt nó để tôi có thể thử xem lỗi và nguyên nhân gây ra lỗi là gì.

Tôi đã cố gắng kích hoạt tất cả menu ngoại lệ trong menu gỡ lỗi Debug, nhưng nó không thay đổi gì cả.

Có cách nào để nói với VS rằng tôi muốn nghỉ ngơi khi xuất cảnh bất thường này xảy ra không?

+0

Tôi đã có một trong số đó và không thể tìm ra trong chế độ Phát hành. Khi chạy trong chế độ Debug, * với trình gỡ rối đính kèm *, nó hóa ra chỉ là một dereference rỗng đơn giản và đơn giản, nhưng bằng cách nào đó nó đã được báo cáo như một ngoại lệ khi trình gỡ lỗi không được đính kèm. –

Trả lời

11

Đoán của tôi: bạn đang gặp lỗi xác nhận và CRT không thể tạo cửa sổ thư (vì lý do nào đó). Điều này dẫn đến một cuộc gọi thoát (3). Tôi không chắc chắn nếu điều đó sẽ giết tất cả các chủ đề với mã thoát đó. Có lẽ tất cả các chủ đề của bạn đang thất bại trong cùng một cách khi một cái gì đó đi sai.

Thử thêm một cuộc gọi _CrtSetReportMode ở đầu chương trình của bạn để buộc thông báo lỗi xác nhận vào cửa sổ đầu ra trong trình gỡ lỗi. Sau đó, bạn sẽ thấy các chi tiết của lỗi xác nhận trong cửa sổ đầu ra gỡ lỗi trước chuỗi tin nhắn thoát khỏi chuỗi.

+0

Có vẻ như bạn đã đúng, một khẳng định đã được nhấn vào một chủ đề khác. Cuối cùng tôi đã thoát khỏi lỗi này, cảm ơn :) – Louen

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