使用 GDB 调试 Firefox 构建时在 Javascript 中的一行中断

Break at a line in Javascript when debugging Firefox build with GDB

我正在 Firefox 中利用 Javascript。我正在使用 gdb 在 SpiderMonkey JS 引擎中设置断点,并希望在进行特定分配时中断并观察堆状态。断点应该怎么设置?

我试过插入 Math.cos 调用之类的方法。例如,

<body>
  <p> Hi </p>
<script>
    var container = [];
    for (var i = 0; i < 125000; ++i) {
         container[i] = document.createElementNS('http://www.w3.org/2000/svg', 'image');
    }
    Math.cos(1); // I want to break here
    // ...
</script>
</body>

I 运行 firefox with ./mach 运行 --debug 并在JS引擎中的js::math_cos设置断点,然后打开 html 文件,但从未命中断点。

但是,如果我 运行 JS shell 使用相同的 JS 代码,只要在输入中调用 Math.cos Javascript,也许 Firefox 构建采用的代码路径与其 JS shell 不同,但我找不到它。

我在启动 Firefox 时添加了一个选项 --disable-e10s,即 运行 ./mach run --disable-e10s --debug,它现在会在脚本中的所有断点处中断。