![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 71
coldice0521
主要负责网站,软件整体构架
展开
-
gdb调试出错程序
今天写了一个hook函数,执行出错,不得其解,错误信息无法定位原因,使用gdb很快解决。Ubuntu 16.04.6 LTS一、背景写了一个hook函数,放在LD_PRELOAD下,用来监控malloc和free行为,代码如下:#define _GNU_SOURCE#include <stdio.h>#include <stdint.h>#include <dlfcn.h>#include <stdlib.h>#include <s.原创 2021-01-09 18:12:08 · 1935 阅读 · 1 评论 -
Linux的hook机制:自定义动态链接库hook
最近在研究应用申请内存时的行为,这时候需要hack掉glibc的malloc和free等内存申请操作。用自己写的钩子函数统计malloc和free的频次和大小,以便于解决问题。一、原理linux调用C库中的函数,使用动态库时,环境变量 LD_PRELOAD 所指定程序(动态库)在运行时会优先加载,这个动态库中的符号优先级最高,该库中的函数将会替换掉 glibc 中的相关函数,例如 malloc() 和free()。可以将内存管理库替换为 jemalloc 或者 tcmalloc 。LD_PREL.原创 2021-01-09 17:42:31 · 2029 阅读 · 3 评论 -
JVM源码分析:Java对象模型(OOP-Klass模型),Java对象在JVM中的表现形式
jvm环境:openJdk15_20的hotspot一、问题背景当我们在java程序中,使用new创建一个对象时,是否考虑过或者知道这个对象在JVM中是如何表示的?它占用的内存大小是多少?class A { int a;}public static void main(String[] args) { A a = new A();}二、Java对象模型-OOP-Klass在JVM中,Hotspot并没有将Java对象映射成C++对象,而是实现了Java的对象模型(OOP-Klass.原创 2020-09-07 21:30:17 · 876 阅读 · 1 评论 -
linux内核源码解析:linux源码下载及top命令中的RES是如何计算的
CLion:2019.3.6源码管理平台:Macbook Pro 10.12.6linux源码一、背景通过上一节,我们知道了top中的RES是从/proc/pid/statm文件中读取出来的,详细的可以看这篇博客《linux的top命令源码解析:RES指标》,这次我们要弄清楚/proc/pid/statm文件中resident值是怎么计算出来的。二、克隆linux源码2.1 linux源码github上,linux的源码地址是:https://github.com/torvalds/lin.原创 2020-09-06 13:26:25 · 2065 阅读 · 0 评论 -
linux的top命令源码解析:RES指标
CLion:2019.3.6源码管理平台:Macbook Pro 10.12.6C语言源码程序:Makefile格式的linux系统的top命令源码。top所在的系统:ubuntu 14.04一、源码导入linux的top命令采用的是procps-ng项目,可以通过Clion 导入Makefile格式的C语言源程序:procps项目 这篇博客将源码进行下载和导入。二、RES 指标的源码分析1、输入top命令后显示如下:对于RES指标, 代表PID进程占用的物理内存,其中包括共享库内存,.原创 2020-09-06 08:49:23 · 17340 阅读 · 2 评论 -
Clion 导入Makefile格式的C语言源程序:procps项目
CLion:2019.3.6平台:Macbook Pro 10.12.6C语言源码程序:Makefile格式的linux系统的top命令源码。一、背景最近在研究JVM虚拟机内存的占用情况,通过top命令看到进程的RES占用的内存很大,已经超过了java虚拟机设置的大小,所以想弄明白top的RES的数据是怎么计算出来的,但是前提是需要将top的源码下载到本地进行研究。二、源码地址top命令的项目是procps-ng项目,地址是:https://gitlab.com/procps-ng/proc.原创 2020-09-05 22:35:15 · 2315 阅读 · 0 评论