Отладка emscripten с помощью визуального кода студии

У меня есть привет код мира в emscripten. Я хотел бы, если возможно, отладить его с помощью кода Visual Studio и установить точки останова и отладки проще. Я пытался сделать это, но я не могу остановиться на точке останова. Я использую эту команду для компиляции своего кода и файла hello.html в режиме отладки.

set EMCC_DEBUG=1
emcc hello.c -o hello.html
set EMCC_DEBUG=0

1 ответ

Краткий ответ: вы не можете отлаживать части кода C/C++ с помощью встроенного отладчика, пока он работает в веб-браузере, вам придется отлаживать свой код другим способом.

Длинный ответ:

Прежде всего, set EMCC_DEBUG=1 выводит отладочную информацию о промежуточном коде, который emcc генерирует. Использовать -g флаг при компиляции для включения отладочной информации: emcc -g hello.c -o hello.html, На сайте Emscripten есть целая страница по отладке, которую вы должны прочитать. Если ваш проект может работать в asm.js, вы сможете использовать -g4 технология карты исходного кода, которая должна позволять вам использовать отладчик JS браузера для отладки вашего кода. Мой текущий проект не работает под asm.js, что делает отладку интересной.

К сожалению, при компиляции в WebAssembly (по умолчанию), -g на самом деле не так уж и много (насколько я могу судить), так как часть JavaScript вызывает WebAssembly, которая все равно кажется черным ящиком.

(Изменить: Похоже, что последние версии браузеров улучшаются на фронте отладки wasm.)

Самый простой способ отладки кода wasm - это отладка его как нативной сборки - если проблема не относится к Emscripten, это будет самый простой метод.

В противном случае вы всегда можете найти какую информацию вы можете с помощью отладки printf. Если вы используете старый старый C или не используете виртуальные функции, вы можете получить приличную информацию с EM_ASM(console.trace();); (если вы проходите через vtbl, вы, как правило, просто получаете трассировку от функции-члена диспетчеру, что обычно не очень полезно).

Удачи!

Другие вопросы по тегам