gpt4 book ai didi

emscripten - 使用 visual studio code 调试 emscripten

转载 作者:行者123 更新时间:2023-12-04 17:45:23 25 4
gpt4 key购买 nike

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

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

最佳答案

简短回答:当代码在 Web 浏览器中运行时,您无法使用 native 调试器调试代码的 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 的 source map 技术,这应该允许你使用浏览器的 JS 调试器来调试你的代码。我当前的项目无法在 asm.js 下运行,这使得调试变得很有趣。

可悲的是,当编译为 WebAssembly(默认)时,-g 并没有真正让你得到那么多(据我所知),因为 JavaScript 部分正在调用 WebAssembly,它无论如何,看起来仍然是一个黑盒子。

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

调试 wasm 代码的最简单方法是将其作为 native 构建进行调试——如果问题不是 Emscripten 特有的,这将是最简单的方法。

否则,您始终可以通过 printf 调试收集您能收集到的信息。如果您使用的是普通的旧 C,或者不使用虚函数,您可能能够通过 EM_ASM(console.trace();); 获得不错的信息(如果您 通过 vtbl,您往往只能获得从成员函数到调度程序的跟踪,这通常不是很有用)。

祝你好运!

关于emscripten - 使用 visual studio code 调试 emscripten,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52333308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com