Tôi đang làm việc trên một hệ thống xây dựng cho ứng dụng MonoTouch khá lớn đang sử dụng nhiều thành phần đa nền tảng. Kết quả là, chúng ta thường gặp phải tình huống mà một trong những thành phần đa nền tảng đó thực hiện một thứ không thể được biên dịch. Nếu một cái gì đó thực sự được thực hiện, việc xây dựng thiết bị sẽ sụp đổ. Tại thời điểm đó, chúng ta phải theo dõi nơi xảy ra sự cố, tìm phương pháp vi phạm và hack nó lên để nó không cố gắng JIT trong bản dựng MonoTouch.Phát hiện JIT tại thời gian biên dịch trong MonoTouch
Câu hỏi của tôi là, có cách nào để phát hiện những điều này trong quá trình xây dựng không? Lúc đầu, chúng tôi đã có một regex đã cố gắng để phát hiện các phương pháp ảo chung, nhưng cũng có vấn đề với một số loại LINQ và lambdas sẽ cố gắng để JIT là tốt, và tôi không muốn viết phân tích cú pháp của riêng tôi để phát hiện chúng tất cả các. Tôi đã thử sử dụng monodis AssemblyName.dll
, và nó sẽ cho tôi rất nhiều lỗi phương pháp thiếu, nhưng hầu hết trong số họ dường như vô hại - và ngay cả khi họ không, nó không cho tôi biết nơi mà các tài liệu tham khảo cho biết phương pháp như vậy mà tôi có thể thấy những gì cần phải làm. Ngày đầu đó, đôi khi nó sẽ sụp đổ với Abort trap: 6
hoặc Bus error: 10
trước khi kết thúc lắp ráp, đó là khá vô ích. Có cách nào tốt hơn tôi có thể phát hiện những nỗ lực để JIT trong quá trình xây dựng của tôi?
Về mục tiêu di chuyển này ... Chúng tôi đã ấn tượng rằng một số thứ như các phương pháp ảo chung không được hỗ trợ bởi vì chúng không thể. Đó có phải là thứ có thể thay đổi không? Chúng tôi không sao báo cáo những điều nên làm việc nhưng không; rắc rối là vũ trụ của những thứ không bao giờ nên hoạt động. –
Cá nhân tôi không biết (ngoại trừ việc biên soạn mọi khả năng) làm thế nào để giải quyết nó (nhưng những người khác đang xem xét các vấn đề. Vì vậy, nghi ngờ bạn tốt hơn điền vào một báo cáo lỗi - trường hợp xấu hơn nó sẽ bị đóng như một bản sao của một hiện tại . – poupou