使用Visual Studio代码调试脚本

时间:2018-09-14 13:45:14

标签: emscripten

我在emscripten中有一个hello世界代码。我希望尽可能使用Visual Studio代码对其进行调试,并设置断点并使调试更加容易。我试图这样做,但是我无法在断点处停止。 我使用此命令在调试模式下编译代码和hello.html。

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

1 个答案:

答案 0 :(得分:1)

简短的回答:当本地调试器在Web浏览器中运行时,您无法使用本机调试器调试C / C ++代码,您将不得不以其他方式调试代码。

长答案:

首先,set EMCC_DEBUG=1输出有关emcc生成的中间代码的调试信息。编译时使用-g标志来启用调试信息:emcc -g hello.c -o hello.html。您应该阅读的Emscripten网站has an entire page on debugging。如果您的项目可以在asm.js中运行,则应该能够使用-g4的源映射技术,该技术应允许您使用浏览器的JS调试器来调试代码。我当前的项目在asm.js下无法正常工作,这使调试变得很有趣。

可悲的是,当编译为WebAssembly时(默认设置),-g并没有真正让您受益(据我所知),因为JavaScript部分正在调用WebAssembly,这看起来似乎还很多一个黑匣子。

(编辑:It seems that the latest version of browsers are improving on the wasm debugging front.

调试wasm代码的最简单方法是将其作为本机版本进行调试-如果问题不是Emscripten特有的,这将是最简单的方法。

否则,您始终可以通过printf调试收集哪些信息。如果您使用的是普通的旧C语言,或者不使用虚函数,则可以使用EM_ASM(console.trace(););获得不错的信息(如果 are 正在通过vtbl进行操作,则往往会得到从成员函数到调度程序的跟踪,这通常不是超级有用)。

祝你好运!