如何通过.Net CLR GC动态获取函数头地址,并探讨C语言的巧妙技巧(需谨慎操作)?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2162个文字,预计阅读时间需要9分钟。
前言:懒癌犯了,这里好久没正经写过文章。看到一些人高产,真是羡慕嫉妒恨。决定稍微变化一下,不那么懒了。如有错漏,请指正。
+.NET的GC聊得很多,本篇主要聊聊剑走偏锋,谈一谈。
前言:太懒了,从没有在这里正儿八经的写过文章。看到一些人的高产,真是惭愧。决定稍微变得不那么懒。如有疏漏,请指正。
.net的GC都谈的很多了,本篇主要是剑走偏锋,聊聊一些个人认为较为核心的细节方面的问题。至于,标记,计划,压缩,清扫这些不在讨论之列。
一段内存有内存的起始地址(暂叫base),内存的结束地址,以及内存指针当前指向的地址大致的三个概念。而在这段内存里面分配了函数之后,一个函数在内存里面必定有一个函数的起始地址也就是指令(第一个push)所在的地址,称之为函数头地址,函数的结束地址也就是指令(ret)所在的地址。在函数里面做了一些事情,那么这些可以称之为函数中间的某个地址。
通过函数中间的某个地址(不固定的)获取到函数头地址(固定的)。称之为动态获取函数头地址
硬编码动态获取到函数头地址之后,你就可以得到GC信息,方法描述符信息,调试信息,异常信息,回滚信息,帧栈信息等等。
本文共计2162个文字,预计阅读时间需要9分钟。
前言:懒癌犯了,这里好久没正经写过文章。看到一些人高产,真是羡慕嫉妒恨。决定稍微变化一下,不那么懒了。如有错漏,请指正。
+.NET的GC聊得很多,本篇主要聊聊剑走偏锋,谈一谈。
前言:太懒了,从没有在这里正儿八经的写过文章。看到一些人的高产,真是惭愧。决定稍微变得不那么懒。如有疏漏,请指正。
.net的GC都谈的很多了,本篇主要是剑走偏锋,聊聊一些个人认为较为核心的细节方面的问题。至于,标记,计划,压缩,清扫这些不在讨论之列。
一段内存有内存的起始地址(暂叫base),内存的结束地址,以及内存指针当前指向的地址大致的三个概念。而在这段内存里面分配了函数之后,一个函数在内存里面必定有一个函数的起始地址也就是指令(第一个push)所在的地址,称之为函数头地址,函数的结束地址也就是指令(ret)所在的地址。在函数里面做了一些事情,那么这些可以称之为函数中间的某个地址。
通过函数中间的某个地址(不固定的)获取到函数头地址(固定的)。称之为动态获取函数头地址
硬编码动态获取到函数头地址之后,你就可以得到GC信息,方法描述符信息,调试信息,异常信息,回滚信息,帧栈信息等等。

