많은 크로스 플랫폼 구성 요소를 사용하는 상당히 큰 MonoTouch 응용 프로그램 용 빌드 시스템에서 작업하고 있습니다. 결과적으로, 우리는 종종 이러한 크로스 플랫폼 구성 요소 중 하나가 컴파일 할 수없는 일을하는 상황에 처하게됩니다. 뭔가 실제로 실행되면 장치 빌드가 중단됩니다. 이 시점에서 우리는 충돌이 발생한 곳을 추적하고 문제의 원인을 찾아 해킹하여 MonoTouch 빌드에서 JIT를 시도하지 않도록해야합니다.MonoTouch에서 컴파일 타임에 JITs 검색하기
제 질문은 빌드 프로세스 중에 이러한 것들을 감지하는 방법이 있습니까? 처음에는 일반 가상 메서드를 검색하려고하는 정규식이 있었지만 JIT도 시도 할 LINQ 및 Lambda의 특정 유형에 대한 문제가 있으며이를 감지하기 위해 내 파서를 작성하려고하지 않습니다. 모든. monodis AssemblyName.dll
을 사용해 보았는데 많은 누락 된 메소드 오류가 발생하지만 대부분은 무해한 것으로 보입니다 - 그렇지 않더라도 메소드에 대한 참조가 어디에 있는지는 알려주지 않습니다. 내가해야할 일이 무엇인지 알 수있다. 그 중 어셈블리가 끝나기 전에 Abort trap: 6
또는 Bus error: 10
으로 충돌하는 경우가 있습니다. 이는별로 도움이되지 않습니다. 빌드 프로세스에서 JIT 시도를 감지 할 수있는 더 나은 방법이 있습니까?
이 움직이는 목표에 대해 ... 일반적인 가상 방법과 같은 일부 기능은 지원할 수 없기 때문에 지원되지 않았습니다. 그것은 바뀔 수있는 것입니까? 우리는 일을해야하지만하지 말아야 할 일을보고하는 것은 괜찮습니다. 문제는 결코 작동해서는 안되는 것들의 우주입니다. –
개인적으로 나는 (모든 가능성을 컴파일하는 것 제외하고) 어떻게 해결해야 할지를 모르지만 (다른 사람들은이 문제를보고 있습니다.) 의심 스러우면 버그 리포트를 작성하는 것이 더 나을 것입니다 - 더 나쁜 경우에는 기존의 것과 중복되어 닫힙니다 . – poupou