Отладка emscripten с помощью визуального кода студии - PullRequest
0 голосов
/ 14 сентября 2018

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

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

1 Ответ

0 голосов
/ 12 октября 2018

Краткий ответ: вы не можете отлаживать части кода 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, вы, как правило, просто получаете след отфункция-член диспетчера, которая обычно не очень полезна).

Удачи!

...