2013-07-16 39 views
7

Chúng tôi đang xây dựng giải pháp cho Bản phát hành, nhưng khi cố gắng đính kèm bằng chuyên nghiệp studio 2010, không có chuỗi nào hiển thị bất kỳ thông tin ngăn xếp nào cũng như bất kỳ điểm ngắt nào có thể được đặt, v.v.Không thể gỡ lỗi ứng dụng ở chế độ phát hành ngay cả với DebugType = full

Mục đích là để có thể đính kèm Trình gỡ lỗi Visual Studio/JIT vào tiến trình đang chạy trong khi có nhiều lợi ích tối ưu hóa nhất có thể.

Hầu hết các tìm kiếm của chúng tôi đều bắt đầu 'biên dịch với gỡ lỗi: đầy đủ' và bạn sẽ có thể gỡ lỗi, nhưng điều đó dường như không đúng, tôi nghĩ rằng JIT tối ưu hóa mã trong thời gian chạy và do đó chúng tôi không thể gỡ lỗi, điều này có đúng không? Có thể biên dịch và yêu cầu JIT giảm bớt tối ưu hóa và cho phép gỡ lỗi không? (Trong khi giữ lại tối ưu hóa khác)

CẬP NHẬT

sử dụng @ câu trả lời HansPassant, tôi nhìn vào mô-đun và thấy rằng mặc dù PDBs đang ở trong cùng thư mục với tập tin nhị phân, thực sự không có ký hiệu gỡ lỗi đã được nạp. những gì tôi cũng thấy là các thư viện của tôi được đánh dấu là 'Mã người dùng' - 'KHÔNG' có thể là lý do nó không được tải tự động. Bằng cách tải các biểu tượng theo cách thủ công VÀ tắt 'chỉ-mã của tôi' Tôi cũng có thể đặt các điểm ngắt và xem ngăn xếp.

Câu hỏi ngay bây giờ: tại sao mã của tôi không được đánh dấu là Mã người dùng? hành vi bình thường này? Tôi có thể cấu hình này để hội đồng của tôi trong một số cách để tránh điều này?

+0

'cũng như không có điểm ngắt nào có thể được đặt' <- tại sao không? nó có phải là 'không có biểu tượng phù hợp có thể được tìm thấy' lỗi msg? – wal

+0

@wal Vui lòng xem câu hỏi cập nhật, đó là sự kết hợp giữa các biểu tượng bị thiếu và mã 'chỉ-my-code' bị vô hiệu hóa –

Trả lời

13

Gỡ lỗi mã được tối ưu hóa không phải là một niềm vui lớn. Bạn chắc chắn có thể gặp khó khăn trong việc thiết lập các điểm ngắt, một phương pháp có thể đã được inlined. Và kiểm tra các biến cục bộ và các đối số phương thức có trách nhiệm làm cho trình gỡ rối bị biến đổi khi biến được tối ưu hóa để được lưu trữ trong thanh ghi cpu.

Tuy nhiên, bạn chắc chắn vẫn có thể kiểm tra ngăn xếp cuộc gọi, bạn sẽ thấy các phương pháp không được nêu trong dấu vết ngăn xếp. Lỗi cơ bản bạn có thể thực hiện:

  • khi bạn đính kèm trình gỡ lỗi, bạn sẽ có tùy chọn để chọn loại trình gỡ lỗi. Hãy chắc chắn chọn "Được quản lý", bạn sẽ không sử dụng nhiều cho trình gỡ lỗi gốc
  • đảm bảo rằng bạn đang xem đúng chủ đề, chương trình có thể bị hỏng ở vị trí tùy ý. Sử dụng các chủ đề Debug + Windows + để chọn chủ đề thích hợp
  • đảm bảo rằng bạn thực sự bị hỏng tại một vị trí trong mã của mình. Bạn có thể dễ dàng kết thúc bên trong một hệ điều hành Windows DLL hoặc một phương pháp khung, sẽ có rất ít để xem xét khi đó là trường hợp. Công cụ + Tùy chọn, Gỡ lỗi, Ký hiệu và kích hoạt máy chủ biểu tượng để các dấu vết ngăn xếp bắt đầu bên trong Windows sẽ chính xác
  • trình gỡ lỗi phải có khả năng định vị tệp PDB. Sử dụng Debug + Windows + Modules, bạn sẽ thấy các assembly được nạp trong tiến trình. Trước tiên hãy chắc chắn rằng một trong những bạn muốn gỡ lỗi thực sự được nạp. Nhấp chuột phải vào nó và chọn "Thông tin tải biểu tượng". Nó cho bạn thấy nơi mà nó tìm kiếm tệp PDB
  • tùy chọn "chỉ mã của tôi" có thể bị cản trở, bạn rất có khả năng chạy vào các đoạn mã quan trọng không phải của bạn. Công cụ + Tùy chọn, Gỡ lỗi, Chung và tắt tùy chọn đó.
+2

(+1) Cửa sổ 'Mô-đun' cho thấy các hội đồng của tôi không được coi là mã người dùng, vui lòng xem câu hỏi được cập nhật –

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