Qt、Linux 与一切:调试 Qt WebAssembly
Source: Hacker News
介绍
开发者最繁琐的任务之一就是调试恼人的 bug。若是 Web 应用就更糟,若是 WebAssembly Web 应用则更糟。
调试 Qt WebAssembly 最简单的方法是使用 -g 参数或 CMAKE_BUILD_TYPE=Debug 配置构建。Emscripten 会在 wasm 二进制文件中嵌入 DWARF 符号。
注意: 使用 DWARF 调试 wasm 文件仅在 Chrome 浏览器并配合浏览器扩展时有效。
- C/C++ DevTools 支持 (DWARF) – 浏览器扩展。
如果你使用 Safari 或 Firefox,或无法安装浏览器扩展,则需要生成 source map(将在后续文章中介绍)。
DWARF 调试
需要在浏览器开发者工具的设置中启用 DWARF。与 source map 不同的是,你不需要为源码目录创建符号链接,因为二进制文件已经嵌入了完整的目录路径。
Emscripten 默认在使用 -g 编译的二进制文件中嵌入 DWARF 符号,所以只需在调试模式下重新构建 Qt 或你的应用即可。
Qt 默认使用优化参数 -g2 构建调试库,这会生成较少的调试信息但链接速度更快。若想保留完整的调试符号,请使用 -g 或 -g3 构建 Qt 调试版。这两种选项的效果相同。
使用 DWARF 调试器
- 打开已安装扩展的 Chrome 并打开 DevTools 控制台。
- 导航到需要调试的 Qt for WebAssembly Web 应用。
- 等待几秒钟,让所有符号和文件解析完成(调试 Qt 可能需要更长时间)。
- 控制台会列出源码文件路径。找到想要调试的文件并设置断点。
- 重新加载页面;当执行到断点时,程序会停止并在源码视图中高亮当前行,同时显示变量名和数值。
- 像调试桌面应用一样逐步执行代码。