如何对正在运行的进程,进行heap profile

简单来说, 就是先preload上tcmalloc, 日常用用没啥问题, 当感觉出现问题时, gdb attach 上, 然后执行 call HeapProfilerStart("xxx") , 过一段时间, 再执行call HeapProfilerStop, 产出相应的profile文件, 然后detach出进程

以下为一些未整理的 link

https://gperftools.github.io/gperftools/heapprofile.html

https://linux.cn/article-9588-1.html

https://unix.stackexchange.com/questions/36450/how-can-i-find-a-memory-leak-of-a-running-process

https://stackoverflow.com/questions/18455698/lightweight-memory-leak-debugging-on-linux

https://bugzilla.redhat.com/show_bug.cgi?id=921676

https://stackoverflow.com/questions/2564752/examining-c-c-heap-memory-statistics-in-gdb

http://milianw.de/blog/heaptrack-a-heap-memory-profiler-for-linux

https://wizardforcel.gitbooks.io/100-gdb-tips/finish-and-return.html

https://en.wikibooks.org/wiki/Linux_Applications_Debugging_Techniques/Leaks

https://github.com/WuBingzheng/memleax

原文地址:https://www.cnblogs.com/xuxm2007/p/9614984.html

时间: 2024-10-29 14:29:45

如何对正在运行的进程,进行heap profile的相关文章

gdb调试正在运行的进程

[转自] http://hi.baidu.com/brady_home/blog/item/6b92aa8ffdfee2e6f01f369b.html gdb调试正在运行的进程 2009年04月18日 星期六 下午 08:21 有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形).这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行.另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式.GDB可以对正在执行的程

ssh 关闭后仍保持当前运行的进程

ssh 关闭后仍保持当前运行的进程 由于各种原因,需要通过ssh登录linux或者unix主机,很多时候我们需要通过ssh的终端启动一 些服务或者运行一些程序,但是默认情况下,当我们关闭ssh终端连接,随之启动的程序也会关闭.原因是:SSH会话关闭时,ssh所关联的pty关闭,系 统会给这个pty所关联的session中的所有进程发送SIGHUP信号,SIGHUP的默认信号处理程序是终止进程,除非进程自己处理了 SIGHUP. 解决方法如下: 使用现成的命令nohup,可以让指定的程序在pty关

Window获取所有运行的进程

通过遍历任务管理器,输出当前正在运行的进程ID和Name. 同时打印出遍历过程所消耗的时间. /* @Date:2014/6/8 @Author:Alex */ #include <iostream> #include <string> #include <map> #include <windows.h> #include <TlHelp32.h> using namespace std; bool traverseProcesses(map&

在Linux中查看所有正在运行的进程

可以使用ps命令.它能显示当前运行中进程的相关信息,包括进程的PID.Linux和UNIX都支持ps命令,显示所有运行中进程的相关信息. ps命令能提供一份当前进程的快照.如果想状态可以自动刷新,可以使用top命令. ps命令 输入下面的ps命令,显示所有运行中的进程: 1 # ps aux | less 其中, -A:显示所有进程 a:显示终端中包括其它用户的所有进程 x:显示无控制终端的进程 任务:查看系统中的每个进程. 1 2 # ps -A # ps -e 任务:查看非root运行的进程

Inno Setup 在安装程序开始前和卸载程序开始前,检查并关闭运行的进程

(2011-12-29 11:54:56) 转载▼ 标签: innosetup it 分类: 开发工具经验累积 Inno Setup在安装程序前,如果有使用的进程在运行,会有错误提示,而使得Installer无法写入. 同样,在卸载程序前,如果有使用的进程仍在运行,会有错误提示,之后卸载不干净,需要手动清除. 所以,只要在安装程序前或者卸载程序前,检查并关闭掉用到的正在运行的进程,就没有问题啦. [code] // 安装前检查关闭**进程 procedure CurStepChanged(Cur

android 查看当前正在运行的进程

转载至 https://github.com/wenmingvs/AndroidProcess 因为Android5.0以上的权限封锁,无法直接获取正在运行的进程,此文总共介绍6中方法获取, 详细介绍与用法可查看原文

android 查看手机运行的进程列表

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation

GDB(十)--调试正在运行的进程

我编写了一个循环: long i;    for (i = 0; i < 999999; i++) {        mt.a += 1;        sleep(1);    }把它编译成a.out,并在后台执行它:./a.out & [1] 2570 然后用命令gdb ./a.out 2570可以附加到这个进程上.被时进程会中断. 或者在GDB里输入attach 2570同样可以附加到进程. 输入bt来查看栈 (gdb) bt#0  0x008e9416 in __kernel_vsy

72获取内存信息(运行的进程数,可用的总内存,剩余内存)&amp;&amp;获取可用的总内存的BUG的解决

获取内存信息(运行的进程数,可用的总内存,剩余内存)属于系统的工具方法了,开始的工具方法是这样的: package com.ustc.mobilemanager.utils; import java.util.List; import android.app.ActivityManager; import android.app.ActivityManager.MemoryInfo; import android.app.ActivityManager.RunningAppProcessInfo