摘要:
调试core文件 当获得了core文件以后,就可以利用命令gdb进行查找,参数一是应用程序的名称,参数二是core文件。也可以用-c来指定core文件。 如: gdb [paremeter] app [paremeter] /app.core 然后输入bt(backtrace)或者where找到错误发生的位置和相应的堆栈信息。就可知道发生错误时的函数调用关系,然后可以使用up或者down查看... 阅读全文
摘要:
* Remove surrounding whitespace from a std::string. * @param s The string to be modified. * @param t The set of characters to delete from each end * of the string. * @return The same string passed... 阅读全文
摘要:
1、伪终端这个术语暗示对于一个应用程序而言,它看上去像一个终端,但实际上应用程序被欺骗了。从内核角度看,伪终端看起来像一个双向管道。而事实上Solaris的伪终端就是用STREAMS构建的。 /dev/ptyAX -- 伪终端Pseudo Terminal的主设备 /dev/ttyAx -- 伪终端的从设备 /dev/pts/n -- 在Xwindows模式... 阅读全文
摘要:
Linux系统出现了性能问题,一般我们可以通过top、iostat、free、vmstat等命令来查看初步定位问题。其中iostat可以给我们提供丰富的IO状态数据。 $iostat -d -k 1 10 参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。 ... 阅读全文
摘要:
Swap基本原理 众所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。 Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些... 阅读全文
摘要:
查看内存使用情况1.top“2 users”为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;“load average”为当前系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,一般的可以认为这个数值超过 CPU 数目时,CPU 将比较吃力的负载当前系统所包含的进程;第五行(Swap)表示类别同第四行(Mem),但此处反映着交换分区(Swap)的使用情况。通常,交换分区(Swap)被频繁使用的情况,将被视作物理内存不足而造成的。2.freetotal:总 阅读全文
摘要:
munmap munmap(解除内存映射) 相关函数 mmap 表头文件 #include<unistd.h> #include<sys/mman.h> 定义函数 int munmap(void *start,size_t length); 函数说明 munmap()用来取消参数start所指的映射内存起始地址,参数length则是欲取消的内存大小。当进程... 阅读全文
摘要:
Linux通过一个叫做 task_statm 的函数来返回进程的内存使用状况 int task_statm(struct mm_struct *mm, int *shared, int *text, int *data, int *resident) { *shared = get_mm_counter(mm, file_rss); *text = (PAGE_... 阅读全文
摘要:
VIRT: 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据,以及malloc、new分配的堆空间和分配的栈空间等; 2、假如进程新申请10MB的内存,但实际只使用了1MB,那么它会增长10MB,而不是实际的1MB使用量。 3、VIRT = SWAP + RES RES: 1、进程当前使用的内存大小,包括使用中的malloc、new分配的堆空间和分配... 阅读全文