Отладка WASM в WebAudio Worklet - PullRequest
0 голосов
/ 05 мая 2020

Код, сгенерированный Emscripten, не работает в браузере, если заданы параметры отладки (-g4) и создание исходной карты (--source-map-base).

Я начал с Googel's WebAudio с найденным образцом Audio Worklet в https://github.com/GoogleChromeLabs/web-audio-samples.git. Запустив образец из коробки с помощью EMSDK 1.39.14, все работает нормально.

Однако при изменении оптимизации с -O1 на что-то еще (-O0, -O2) или использование -g4 в сочетании с - source-map-base вместо этого приложение не работает при загрузке Audio Worklet с ошибками, появляющимися в консоли браузера.

Мне нужно отладить мой собственный проект, демонстрирующий такое же поведение.

Изменения для примера Makefile:

DEPS = SimpleKernel.cc

build: $(DEPS)
    @/home/johannes/workspace/emsdk/upstream/emscripten/emcc --bind -g4 \
        --source-map-base https://myhost/web-audio-samples/audio-worklet/design-pattern/wasm \
        -s WASM=1 \
        -s BINARYEN_ASYNC_COMPILATION=0 \
        -s SINGLE_FILE=1 \
        SimpleKernel.cc \
        -o simple-kernel.wasmmodule.js \
        --post-js ../lib/em-es6-module.js

clean:
    @rm -f simple-kernel.wasmmodule.js

Сообщения об ошибках из консоли браузера:

Uncaught TypeError: Cannot assign to read only property '__wasm_call_ctors' of object '[object Object]'
    at simple-kernel.wasmmodule.js:3794
(anonymous) @ simple-kernel.wasmmodule.js:3794
(index):34 Uncaught (in promise) DOMException: Failed to construct 'AudioWorkletNode': AudioWorkletNode cannot be created: The node name 'wasm-worklet-processor' is not defined in AudioWorkletGlobalScope.
    at demoCode (https://myhost/web-audio-samples/audio-worklet/design-pattern/wasm/:34:26)
demoCode @ (index):34
async function (async)
demoCode @ (index):32
DemoRunner.eButton.onclick @ Components.js:263
DevTools failed to load SourceMap: Could not load content for https://myhost/web-audio-samples/audio-worklet/design-pattern/wasm{{{ FILENAME_REPLACEMENT_STRINGS_WASM_BINARY_FILE }}}.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
...