Advanced Debugging
About AdvDbg Consult Train Services Products Tools Community Contact  
欢迎光临 高端调试 登录 | 注册 | FAQ
 
  ACPI调试
Linux内核调试
Windows内核调试
 
  调试战役
调试原理
新工具观察
 
  Linux
Windows Vista
Windows
 
  Linux驱动
WDF
WDM
 
  PCI Express
PCI/PCI-X
USB
无线通信协议
 
  64位CPU
ARM
IA-32
  CPU Info Center
 
  ACPI标准
系统认证
Desktop
服务器
 
  Embedded Linux
嵌入式开发工具
VxWorks
WinCE
嵌入式Windows
 
  格蠹调试套件(GDK)
  格蠹学院
  小朱书店
  老雷的微博
  《软件调试》
  《格蠹汇编》
  《软件调试(第二版)》
沪ICP备11027180号-1

WinDbg

帖子发起人: merry   发起时间: 2009-10-21 10:58 上午   回复: 1

Print Search
帖子排序:    
   2009-10-21, 10:58 上午
merryzhao 离线,最后访问时间: 2017/2/21 12:41:06 merry

发帖数前25位
注册: 2008-09-26
发 贴: 61
如何调试Javascript语言的内存(堆)分配?
Reply Quote
如下一段常见的Javascript的spray heap代码,想分析一下它的内存分配方式,
     <script>
     ...
     function spray_heap()
        {
            var payload = "...";
                        
            var ret = 0x0c0c0c0c;
            var heap_chunk_size = 0x40000;
            
            var nops_led_size = heap_chunk_size - (payload.length * 2)
            var nops_led = unescape("%u0c0c%u0c0c");
            while (nop_sled.length < nop_sled_size)
                nop_sled += nop_sled;
                 
            heap_chunks = new Array();
            heap_chunks_num = (ret - heap_chunk_size)/heap_chunk_size;
            for (var i = 0 ; i < heap_chunks_num ; i++)
                heap_chunks = nop_sled + payload;           <=== A
        }
     </script>

     Q:上面代码中执行A句时,如何查看Javascript在堆中分配的堆块数据结构?
     按照一些资料来看,堆块的数据结构大体如下:

      _____________________________________
     |        |         |                  |
     | Header | Length  |                  |
     |________|_________|                  |
     |                                     |
     |                                     |
     |                           __________|
     |                          |     |    |
     |                          |NULL |NULL|
     |__________________________|_____|____|

     因为想验证资料上的数据,所以想用Windbg实际查看一下,但是又不知该如何调试。
     请大家指点,谢谢!
 

IP 地址: 已记录   报告
   2009-11-23, 13:36 下午
ioriwellings 离线,最后访问时间: 2011/1/4 2:56:38 不及格的程序员-八神

发帖数前50位
男
注册: 2009-11-11
发 贴: 22
Re: 如何调试Javascript语言的内存(堆)分配?
Reply Quote
针对浏览器的不对 js 引擎 解析js的方式也不同,大部分浏览器都是解释执行的,
而v8则是编译本地码,而这些引擎的实现一般都以c++在背后作一些事情,或者提供一些接口,供外部使用.

如果你想调试具体内存分配的话,我认为你应该根踪相应js引擎模块.
每个浏览器安装目录下都会有相应的dll,你可以试试,对于win32调试我不在行,我也只能说这么多.
不及格的程序员-八神
IP 地址: 已记录   报告
高端调试 » 软件调试 » WinDbg » Re: 如何调试Javascript语言的内存(堆)分配?

 
Legal Notice Privacy Statement Corporate Governance Corporate Governance
(C)2004-2020 ADVDBG.ORG All Rights Reserved.