易截截图软件、单文件、免安装、纯绿色、仅160KB

一种定位内存泄露的方法(Linux)

目的:
本文是《一种定位内存泄露的方法(Solaris)》对应的Linux版本,调试器使用gdb。主要介绍实例部分。其他请见《一种定位内存泄露的方法(Solaris)》。
实例:
模拟new失败的程序:
#include <stdexcept>
class ABC
{
public:
        virtual ~ABC(){}
        int i;
        int j;
};
 
void f()
{
        for (int i = 0; i < 1000; ++i)
        {
                ABC* p = new ABC;
        }
        throw std::bad_alloc();
}
 
int main()
{
        f();
        return 0;
}
1) 编译运行此段代码。产生一个core文件
2) 用gdb打开这个core文件:
gdb a.out core
(gdb) run
Starting program: /test/new_fail/a.out
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
 
Program received signal SIGABRT, Aborted.
0x00007ffff733f645 in raise () from /lib64/libc.so.6
(gdb) info proc
process 10683
cmdline = '/test/new_fail/a.out'
cwd = '/test/new_fail'
exe = '/test/new_fail/a.out'
(gdb) shell pmap 10683
10683: a.out
START               SIZE     RSS     PSS   DIRTY    SWAP PERM MAPPING
0000000000400000      4K      4K      4K      0K      0K r-xp /test/new_fail/a.out
0000000000600000      4K      4K      4K      4K      0K r--


相关文档:

S3C24XX体系的Linux GPIO控制相关API实现


GPIO(General Purpose Input/Output的缩写)就是芯片的引脚,引脚是可编程的可对引脚的工作模式进行设置:输入模式(检测输入信号),输出模式(输出0或1),高阻状态(常用于AD转换),还有禁止或允许上内部下拉电阻(上拉:管脚通过电阻接高电平,下拉:管脚通过电阻接地,也可以外部接上拉或下拉电阻),还有管脚复用等功能, ......

Linux进程间通讯所使用的系统调用函数


窗体顶端
索引:
1.fork、exec和exit对IPC对象的影响
2.fcntl记录锁
3.管道和FIFO的属性
4.管道和FIFO的限制
5.pipe函数
6.popen和pclose
7.mkfifo函数
8.System V IPC共性描述
9.msqid_ds结构
10.msgget函数
11.msgsnd函数
12.msgrcv函数
13.msgctl函数
14.在System V消息队列上使用select和poll
15.sem ......

Linux进程间通讯之信号量

一. 什么是信号量
信号量(Semaphore)-- 相当一个信号灯,程序里是一个非负整数,表示状态.
可以用来保护两个或多个关键代码段,这些关键代码段不能并发调用。在进入一个关键代码段之前,线程必须获取一个信号量。
如果关键代码段中没有任何线程,那么线程会立即进入该框图中的那个部分。一旦该关键代码段完成了,那么该 ......

Linux进程间通讯之共享内存

共享内存:
使用共享内存和使用malloc()来分配内存区域很相似。使用共享内存的方法是:
    1 对一个进程/线程使用shmget()分配内存区域。
    2 使用shmat()放置一个或多个进程/线程在共享内存中,也可以用shmctl()来获取信息或者控制共享区域。
    3 使用shmdt()从共享 ......

linux Kill多个进程

经常需要Kill多个进程,这些进程包含共同的关键字,可以用一条命令Kill掉它们。 ps aux | grep "common" | cut –c 9-15 | xargs kill –9 管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令: "ps aux" 查看所有进程的命令。这时检索出的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号