【问题标题】:How Javascript strings are encoded in Chrome?Javascript 字符串如何在 Chrome 中编码?
【发布时间】:2011-08-05 13:20:02
【问题描述】:

我正在通过 WinDbg 分析 Chrome 的内存地址空间。 就像我对其他进程所做的那样,我需要提取当前分配在内存中的所有字符串。

为此,我使用 WinDbg 作为非侵入式调试器和命令

s -u 0x0 L?0xffffffff "string"

如果是 unicode,并且

s -a 0x0 L?0xffffffff "string"

如果是 asci。

但是,我似乎错过了所有作为 javascript 字符串对象分配的字符串。这让我觉得在 V8(chrome 引擎)中编码不同,因此我的搜索字符串的字节表示也不同。

知道它是如何工作的吗?我一直在研究 V8 文档,但到目前为止没有任何结果:(

【问题讨论】:

  • 这是一个完全的猜测(这根本不是我的专业领域),但 Chrome 不是专门为每个页面的 js 运行时生成单独的进程吗? IE。字符串可能会出现在由 Chrome 而不是 Chrome 本身产生的进程的内存中
  • 没错,但我同时检查了它的所有进程:)

标签: javascript memory google-chrome windbg


【解决方案1】:

V8 中的字符串并不总是存储为字符序列,它们也可以存储为 ConsString,类似 Lisp。您可以检查V8 sources 中使用的实际 C++ 结构。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-01
    • 2016-07-15
    • 2016-10-02
    • 1970-01-01
    • 2021-09-22
    • 2010-09-19
    • 2015-03-14
    相关资源
    最近更新 更多