Làm cách nào để Unity tạm dừng các ngoại lệ?


9

Tôi đang cố gắng gỡ lỗi một dự án Unity bằng Unity Editor và Visual Studio. Một ngoại lệ thời gian chạy liên tục xuất hiện, nhưng trình gỡ lỗi không dừng khi có ngoại lệ xảy ra, khiến cho việc gỡ lỗi mã của tôi không hiệu quả.

Trong Visual Studio, tôi đã đi vào Công cụ -> Tùy chọn -> Công cụ cho sự thống nhất và đặt "Hỗ trợ ngoại lệ" thành "Đúng". Tôi cũng đã bật tất cả các loại ngoại lệ trong bảng Cài đặt ngoại lệ. Tôi đang kết nối trình gỡ lỗi với Unity bằng nút "Đính kèm với Unity". Điểm dừng đang hoạt động, nhưng trình gỡ lỗi không dừng lại ở Ngoại lệ.

Tôi cần làm gì để Unity / VS thực sự dừng lại ở Ngoại lệ?

Lưu ý: Tôi đã thử đóng và mở lại cả Unity và VS nhiều lần nhưng điều đó không tạo ra sự khác biệt nào.

Câu trả lời:


8

Tài liệu này về bản xem trước công cụ Unity 2.0 cho VS ngụ ý rằng bạn phải bật cả hỗ trợ ngoại lệ Unity thông qua Tools -> Options -> Tools For Unity(đặt "hỗ trợ ngoại lệ" thành đúng, như bạn đã làm) bật mặt nạ ngoại lệ CLR thích hợp trong cài đặt ngoại lệ tích hợp của Visual Studio cửa sổ (chọn hộp bên cạnh "Ngoại lệ thời gian chạy ngôn ngữ chung").

Để có kết quả tốt nhất, bạn có thể muốn kiểm tra và sau đó bỏ chọn dấu kiểm ngoại lệ CLR, vì điều đó sẽ đảm bảo tất cả các kiểu con ngoại lệ được bật để bắt đầu.


3

Bạn có thể cần phải làm một vài điều nữa để làm việc này. Trong trường hợp của tôi, tôi muốn các Xác nhận tích hợp của Unity đưa ra các ngoại lệ sẽ bị VS bắt. Tôi đã phải làm như sau để thực hiện điều này.

  1. Định cấu hình lớp Assert của Unity để đưa ra ngoại lệ thông qua Assert.raiseExceptions=true
  2. Thêm loại Ngoại lệ cụ thể vào cửa sổ cài đặt ngoại lệ của VS. (Nhấp chuột phải, chọn Thêm và nhập UnityEngine.Assertions.AssertionException)

Có bất kỳ bước nào khác bạn đã thực hiện để đưa Unity Assertions ném không? Hai bước này dường như không hoạt động trên Unity 2014 LTS answer.unity.com/questions/1581028/ mẹo
Jethro

1
Không, tuy nhiên tôi đã sử dụng Unity 2018.xx Có thể các phiên bản cũ hơn của Unity đã sử dụng loại Xác nhận khác không? (Trong trường hợp đó, bạn cần thêm một kiểu chữ đủ điều kiện hơi khác vào danh sách đó).
LevitatingKestrel

1
Ngoài ra, tôi nhận thấy rằng trong Cộng đồng VS 15.9.2 - có một hộp kiểm mới trong danh sách này cho <All Common Language Runtime Exceptions not in this list>(Xem trong danh mục Ngoại lệ Thời gian chạy Ngôn ngữ chung). Nếu các trường hợp ngoại lệ mà bạn đang cố gắng nắm bắt trong Unity thực sự không phải AssertionExceptionlà, thì có thể hộp thư này có thể được bao gồm đủ để nắm bắt những gì bạn đang theo đuổi.
LevitatingKestrel

2

Tôi nghĩ, một giải pháp nhanh chóng, bạn có thể thử: Viết nhật ký lỗi trong khối ngoại lệ của mã

Debug.LogError("Exception occured");

Và trước khi chạy trình soạn thảo mở giao diện điều khiển và nhấn Lỗi tạm dừng trong nhật ký giao diện điều khiển. nhập mô tả hình ảnh ở đây

Trò chơi sẽ tạm dừng vì bất kỳ lỗi nào xảy ra trong bảng điều khiển.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.