Краткий ответ: вы не можете отлаживать части кода C / C ++ с помощью встроенного отладчика, пока он работает в веб-браузере, вам придется отлаживать код другим способом.
Longответ:
Во-первых, 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, вы, как правило, просто получаете след отфункция-член диспетчера, которая обычно не очень полезна).
Удачи!