【问题标题】:Debug emscripten with visual studio code使用 Visual Studio 代码调试 emscripten
【发布时间】:2018-09-14 13:45:13
【问题描述】:

我在 emscripten 中有一个 hello world 代码。如果可能的话,我想用 Visual Studio 代码调试它,设置断点和调试更容易。我试图这样做,但我无法在断点处停止。 我使用此命令在调试模式下编译我的代码和 hello.html。

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

【问题讨论】:

    标签: emscripten


    【解决方案1】:

    简短的回答:当它在网络浏览器中运行时,您无法使用本机调试器调试代码的 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();); 获得体面的信息(如果您正在通过 vtbl,您往往只是得到一个跟踪从成员函数到调度程序,这通常不是很有用)。

    祝你好运!

    【讨论】:

    猜你喜欢
    • 2012-09-24
    • 2015-08-04
    • 2011-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-20
    • 2017-09-27
    • 1970-01-01
    相关资源
    最近更新 更多