2016-01-12 6 views
11

У меня очень простое приложение Unity, которое по сути является тестовым жгутом проприетарной структуры. Он отлично работает в Chrome, Firefox и Safari. Edge - это совсем другая история.Совпадение Unity/WebGL и asm.js в MS Edge

В Edge 12 с отключенным asm.js требуется Длительное время загрузки - примерно 90 секунд, по сравнению с 15-20 в других браузерах.

В Edge 12 или 13 с включенным asm.js он быстро загружается, но сразу же отключает вкладку, когда приложение Unity запускается. Мне удалось выяснить, что вызван обратный вызов «preRun», но обратного вызова «postRun» нет.

Я не могу понять, как начать отладку - Edge отключает asm.js, если отладчик Dev Tools открыт, а отключение отладчика также отключает консоль JS. Я не могу подключить отладчик Unity, потому что, похоже, произошел сбой, прежде чем я доберусь до этого момента.

Есть ли какой-то журнал из Edge, где я мог бы найти что-нибудь о сбое, возможно, даже трассировку стека JS?

+2

Код исключения '0xc0000005' является нарушением прав доступа. Вероятно, это попытка разыменовать нулевой указатель. Это похоже на ошибку в Edge, а не на то, что вы можете исправить, или что было (напрямую) вызвано вами. Я думаю, если бы вы могли понять, что делал JS, возможно, вы могли бы обойти это, но это может быть что-то в Unity. – Sam

+1

Вы можете поделиться каким-либо кодом? Я был бы рад передать это некоторым из инженеров, ответственных за работу asm в Edge. Кроме того, ваша версия Edge довольно старая. Попробуйте запустить обновление Windows, чтобы убедиться, что это все еще происходит на Edge 13 (вы на 11) – Patrick

+0

@Patrick - я работаю в основном на Mac, и сейчас я нахожусь во власти того, что на современном.т. е. который сейчас является инициалом предприятия Win10, срок действия которого истек, и я не смог получить обновление Nov на нем. У меня есть несколько коллег из 13, которые испытывают одно и то же. Если вы не возражаете, пожалуйста, свяжитесь со мной по адресу [email protected], и мы сможем выяснить, какой код получить у этих инженеров. –

ответ

3

Это связано с ошибкой в ​​Edge в нашем каталоге специализации asm.js (который я являюсь владельцем). Спасибо, что сообщили о проблеме, я попытаюсь получить исправление, чтобы исправить это в ближайшее время! Если кто-то еще столкнется с сбоем в asm.js, не стесняйтесь присылать мне сообщение, и я с радостью буду работать с вами, чтобы получить исправление (и найти обходной путь тем временем).

-1

Я хотел бы конкретно ответить на ваш вопрос - «Есть ли какой-то журнал из Edge, где я мог бы найти что-нибудь о сбое, возможно, даже трассировку стека JS?»

Я действительно предлагаю вам использовать stacktrace.js - Вот их Github repo.

Пока вы пишете код Javascript, чтобы отлаживать его в браузерах, чтобы найти какие-либо ошибки или исключения, это, безусловно, лучший способ сделать это. Он очень последователен и поддерживает большинство браузеров и даже Edge.

Одна вещь, чтобы отметить Вам нужно IS-знать немного Javascript Promises, которая является частью ES6 (опять-таки большинство последних браузеров поддерживают уже).

Посмотрите на их documentation и используйте то, что именно вас подходит. Они говорят, что это пакет 5-в-1, который вы можете использовать.

Вы можете обрабатывать ошибки, когда это происходит с кодом, как простого как-

window.onerror = function(msg, file, line, col, error) { 
    // callback is called with an Array[StackFrame] 
    StackTrace.fromError(error).then(callback).catch(errback); 
}; 

и получить StackTrace от error-

var error = new Error('BOOM!'); 

StackTrace.fromError(error).then(callback).catch(errback) 
=> Promise(Array[StackFrame], Error); 

Надеется, что это помогает. Счастливое кодирование! :)

+0

К сожалению, это не сработает - когда я говорю «сбой», я не имею в виду, что существует необработанное исключение JS, которое мешает работе кода. Я имею в виду, что процесс Windows, запускающий вкладку, действительно сбой, что приводит к сбою в журнале событий Windows. У меня уже есть обработчик, подключенный к onerror с вызовом «alert», но, похоже, он падает до того, как он дойдет до этого. Тем не менее, stacktrace.js кажется очень полезным, и я определенно мог бы использовать более надежную отчетность об ошибках JS, поэтому спасибо за ссылку! –