Как выглядит отладка JavaScript на Webassembly

Отладка Webassembly (WASM), по понятным причинам, остается проблемой для этой относительно новой и захватывающей технологии, которая все еще развивается. Первоначально разработанный для браузера, он хорошо функционирует в этой среде, особенно для отладки веб -приложений из другого браузера. Emscripten, в качестве компилятора Toolchain и расширений, встроенных в Firefox и Chrome, предлагает достаточно надежную отладку для WASM, работающего в браузере.

Тем не менее, выходя за рамки браузера, особенно для бэкэгендирования вариантов использования и развертывания в разных средах и языках, отладка становится значительно более сложной. Несмотря на эти проблемы, прогресс был достигнут.

В прошлом году, во время ввода/вывода WASM 2024, был резкий контраст между дискуссиями отладки, представленными тогда и в ISM I/O 2025, когда Ralph Squillace из Microsoft описал состояние отладки JavaScript для фронта и бэкэнд как «смущающий».

Проблемы

Во время разговора WASM I/O 2024 «Никто не знает проблемы, которые я видел: отладка WASM для веб -и сервера», Natalia Venditto из Microsoft описали постоянные проблемы отладки из -за отсутствия стандартного API для кода WASM за пределами браузера, особенно в бэкэнд. Как сказала Вендитто во время ее выступления, появились две проблемы:

Во -первых, определение того, что принадлежит внутри модуля Webassembly в сравнении с тем, что должно оставаться в стандарте JavaScript. Во -вторых, управление процессом отладки. Может существовать несколько слоев, и доступ к этим слоям может быть непрерывно. «Новые знания могут потребоваться», — сказал Вендитто.

Как отметил Вендитто, почти 100% разработчиков JavaScript, когда его спрашивают о предпочтительном редакторе кода, выберите код VS. По ее словам, предпочтительная среда остается последовательной на протяжении всего рабочего процесса: во время сборки, развертывания и отлады от отладывания облаков.

«Браузер продолжает служить основной средой для разработчиков JavaScript. Эта среда обеспечивает знакомство, известные инструменты и эффективные рабочие процессы»,-сказал Вендитто.

Вендитто описал сценарий разработчика JavaScript, который хочет использовать Webassembly в приложении и управлять всем рабочим процессом. Проблемы состояли в первую очередь, определяя, что принадлежит внутри модуля Webassembly по сравнению с тем, что должно оставаться в стандарте JavaScript, а во -вторых, управление процессом отладки. «Может существовать несколько слоев, и доступ к этим слоям может быть непрерывно. Может потребоваться новые знания», — сказал Вендитто. Несмотря на эти проблемы, «построение в знакомом контексте остается важным», — сказал Вендитто.

Spidermonkey и VS код

Перенесемся на 2025 год ввода/вывода WASM во время разговора «Нет больше печати: интерактивная отладка WASM для веб -и сервера», данный Squillace и Fermyon’s Till Schneadereit. Обсуждение было сосредоточено на отладке JavaScript в Webassembly с использованием двигателя Spidermonkey и кода Visual Studio. Ключевые моменты включали использование компонентов. Спикер подчеркнул необходимость в унифицированном опыте отладки на разных языках, включая .NET и Python, и цель обеспечения отладки между компонентами в многолучевой среде. Сеанс также освещал использование конфигураций запуска в коде VS для отладки и потенциал для отладки после развертывания в живых средах.

Squillace выразил энтузиазм по поводу достижений в инструментах отладки, в частности, подчеркивая интеграцию инструментов C ++ и статического анализа. Он ссылался на предыдущие проблемы, столкнувшиеся в прошлом году, и отметил переход вдали от нативных зависимостей кода.

Schneidereit подчеркнул подход Фермиона к отладке Webassembly. Он пояснил, что основное внимание уделяется не созданию нового отладчика для Bytecode Webassembly, а на использовании существующих инструментов, таких как Spidermonkey. Этот подход избегает необходимости напрямую осмотреть байт -код, инструменты, такие как карликовые и LLDB, менее эффективные. Вместо этого используется встроенный отладчик контента в SpidermonKey, подключаясь к внешним отладчикам, таким как код Visual Studio через интерфейсы сокетов. Этот метод оказывается полезным для производственных сборов, устраняя необходимость встроенных символов отладки или оптимизации отключений. Более того, это не зависит от какого-либо конкретного времени выполнения, в отличие от других решений, которые требуют комплексных реализаций отладки на основе карликов, сказал Schneidereit.

Демонстрация демонстрирует node.js, работающий с компонентами, обрабатываемыми Jacob, который преобразует основной профиль JavaScript в набор модулей WebAssembly, сопровождаемых кодом клея JavaScript. Эта настройка позволяет выполнять выполнение в node.js, которой не хватает поддержки нативного модуля. Джейкоб по умолчанию использует порт 8000, облегчая тот же трубопровод для запуска JavaScript в SpidermonKey в компоненте Webassembly в node.js. По словам Шнадерета, эта конфигурация допускает последовательный опыт отладки в разных средах, включая прохождение кода и достижение точек останова.

По словам Шнадереита, заметным преимуществом этого подхода является требование только исходящего подключения к сокетам, устраняя необходимость запуска сервера сокета. Традиционная отладка часто включает запуск сервера отладки на отладном устройстве, например, в приложениях iOS или Android. Напротив, этот метод переворачивает процесс, требующий только исходящего соединения, которое упрощает удаленную отладку. По словам Шнейдерета, эта возможность позволяет отладку после развертывания в живых средах, отправив специальный запрос с ключом аутентификации, подключаясь к окружающей среде без необходимости перераспределения.

Следующие шаги включают координацию с другими языками программирования, включая .NET и Python, с целью объединения отладки опыта на разных платформах, сказал Schneidereit. Цель состоит в том, чтобы включить использование одного и того же расширения, в идеале в пределах кода Visual Studio, чтобы отлаживать различные языки. Поскольку используемый протокол не требует кода Visual Studio для распознавания конкретного языка, который будет отлаживается, он должен только получать соответствующие сообщения, касающиеся макетов стека и другой информации отладки, сказал Шнейдерет.

«Значительная мотивация этой работы состоит в том, чтобы проложить путь для стандартизированного решения, где время выполнения играет роль в содействии единому рабочему процессу отладки. В настоящее время подход полностью содержится в содержании, который ограничивает способность беспрепятственно переходить между компонентами», — сказал Шнейдерет.

Учитывая, что компонентная модель подчеркивает составление приложений из разных строительных блоков на различных языках, «конечная цель» состоит в том, чтобы обеспечить опыт отладки, который охватывает эти компоненты, сказал Schneidereit. «Это позволит разработчикам вступить в импортируемые функции из других компонентов, плавно переходя между различными языками, такими как переход от JavaScript к C#», — сказал Шнадерет. «Стремление состоит в том, чтобы достичь этой интегрированной способности отладки в ближайшем будущем».

Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. BC Gain является основателем и главным аналитиком Revecom Media. Его одержимость компьютерами началась, когда он взломал консоль космических захватчиков, чтобы играть весь день за 25 центов в местной видеокаде в начале 1980 -х годов. Затем он … читайте больше от B. Cameron Gain

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *