Отладка 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, вы, как правило, просто получаете трассировку от функции-члена диспетчеру, что обычно не очень полезно).
Удачи!