LINUX下C-C++类软件的诊断

一般C/C++写程序由于内存、指针等问题在后期的过程都一般会遇到内存等资源泄露、崩溃等问题,对于这些问题,一般从哪个角度解决呢?

下面从几个角度进行总结:

内存泄露

首先需要注意一个问题是top或者htop显示的内存使用中cache的问题,这个和windows中的任务管理器看到的有差别。

具体分析如下:

在linux读写文件时,它用于缓存物理磁盘上的磁盘块,从而加快对磁盘上数据的访问。

buffer cache的内容对应磁盘上一个块(block),块通常为1K,都是连续的。在linux下,为了更有效的使用物理内存,操作系统自动使用所有空闲内存作为Buffer Cache使用。当程序需要更多内存时,操作系统会自动减小Cache的大小。我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不必担心自己的内存太少。http://blog.csdn.net/heizistudio/article/details/25125061

如下图,htop显示的数据,其中长时运行时,Mem项有时会使用完了,此时并不表明程序泄露占用,检查真正的进程项目的RES项的内存使用,这个是正在使用的,或者执行 pmap -d 某个进程号,也可以查看

[htop还可以直观的查看线程情况]

有了这些问题,那我们有更好的办法避免吗?答案是:

Ø 智能指针

n C++ 11标准已经有了,stl中的auto_ptr尽量还是避免吧

n boost的share_ptr是常用的

n 双刃剑,使用这个在特定的场景下资源消耗比纯生的new delete效率又损失

文件资源泄露

Ø df -k /##

n 如果某个目录下的操作文件反复读写,可以看到正在使用和已经使用的信息,据此可以查看是否有文件没有关闭

Ø Lsof

n 列出当前系统打开文件的工具

n lsof -p pid

n http://blog.csdn.net/guoguo1980/article/details/2324454

Ø fuser

n 用来显示所有正在使用着指定的file, file system 或者 sockets的进程信息

n http://www.cnblogs.com/yuboyue/archive/2011/07/18/2109838.html

查看网络信息的netstat ss

http://stackoverflow.com/questions/11763376/difference-between-netstat-and-ss-in-linux

http://blog.163.com/xychenbaihu@yeah/blog/static/132229655201222502510543/

procfs

windows下有sysinternals工具,非常方便监控widnows的文件、网络、注册表等的访问;Linux的更厉害的武器,不过都是文件,查看起来有点麻烦,用习惯了功能更强大。

http://blog.csdn.net/jeek566/article/details/8695240

mysql泄露

mysql命令行可以初步查看,如下:

root@csbit:~# mysql -uroot -proot

Warning: Using a password on the command line interface can be insecure.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 28

Server version: 5.6.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show processlist;

+----+-------+-----------+--------+---------+------+-------+------------------+

| Id | User  | Host      | db     | Command | Time | State | Info             |

+----+-------+-----------+--------+---------+------+-------+------------------+

| 28 | root  | localhost | NULL   | Query   |    0 | init  | show processlist |

+----+-------+-----------+--------+---------+------+-------+------------------+

3 rows in set (0.00 sec)

如果show processlist显示的数据不断增多,软件就是有链接泄露,c++处理最好使用cppdb这些有连接池处理的第三方库加速

如果想检查更详细的信息MONyog这个工具可以一用

崩溃分析

泄露分析工具

http://www.cnblogs.com/2018/p/3228174.html

http://www.cnblogs.com/2018/p/3230736.html

linux下发布的执行文件崩溃的问题定位 心得一则

http://www.cnblogs.com/2018/p/3010691.html

http://www.cnblogs.com/2018/archive/2012/05/18/2503897.html

性能调优

问题出来后,如何改善系统性能,此时切记8/2原则,首先修改的是关键路径的部分

http://www.cnblogs.com/2018/p/3380773.html

时间: 2024-10-22 22:53:15

LINUX下C-C++类软件的诊断的相关文章

Linux下安装php加速软件Xcache的步骤

 Xcache是php的一个加速软件了,我们可以通过安装Xcache来提高php的运行性能了,有点像phpfast了,下面一起来看看安装php加速软件Xcache的步骤   说明: php安装目录:/usr/local/php php.ini配置文件路径:/usr/local/php/etc/php.ini Nginx安装目录:/usr/local/nginx Nginx网站根目录:/usr/local/nginx/html 1.安装xcache cd /usr/local/src #进入软件包

3 款 Linux 下的照片管理软件

Linux 下的照片管理软件大家熟悉的大致有十来个.网上搜索一下就能看到相关的文章介绍.本站以前也介绍过:六款优秀的 Linux 照片管理软件,LinuxLink 也有:7 of the Best Free Linux Photo Management Software,等等. DigiKam F-Spot GQview ImgSeek Picasa blueMarine KPhotoAlbum gThumb Mapivi gPhoto UFRaw Rawstudio ExifTool RawT

Linux下用mdadm实现软件RAID

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://navyaijm.blog.51cto.com/4647068/977105   一:简要介绍数据在现今企业中占有重要的地位,数据存储的安全性有而是人们使用计算机要注意的重要问题之一.通常情况下人们在服务器端采用各种冗余磁盘阵列RAID技术来保护数据,中高档的服务器一般都提供了昂贵的硬件RAID控制器,但是很多中小企业没有足够的经费承受这笔开销.我们有没有方法可以通过软件来实现

linux下ALSA音频驱动软件开发

最近一直忙于Linux下ALSA音频驱动的开,作了一次专题讨论,现将部分内容贴出来大家分享一下.    内容提要 一.音频相关的基础知识 •二.Linux下音频驱动开发模型 •三.socxx+ WM8993驱动实例分析 •四.总结 • 五. Question& Discussion   音频相关的基础知识  ----采样.量化     •1.采样频率 •   常用 32kHz. 44.1kHz. 48kHz. •2.量化精度 •   指对采样数据分析的精度,精度越高,声音就越逼真.常用8位.16

如何在Linux下安装Sendmail服务器软件的方法

  1.从www.sendmail.org下载最新的版本(这个snedmail倒是有必要升级为最新的版本,因为它的升级主要是安全漏洞问题).这里说明的是用的sendmail-8.12.2.tar.gz 2.cd /usr/local/src/ 3.把文件下载到:/usr/local/src中 4.tar zxvf sendmail-8.12.2.tar.gz 5.cd /usr/local/src/sendmail-8.12.2 6.chmod go-w / /etc /etc/mail /us

linux下防DDOS攻击软件及使用方法详解

  互联网如同现实社会一样充满钩心斗角,网站被DDOS也成为站长最头疼的事.在没有硬防的情况下,寻找软件代替是最直接的方法,比如用 iptables,但是iptables不能在自动屏蔽,只能手动屏蔽. 一.什么是DDOS攻击? DDoS也就是分布式拒绝服务攻击.它使用与普通的拒绝服务攻击同样的方法,但是发起攻击的源是多个.通常攻击者使用下载的工具渗透无保护的主机,当获得该主机的适当的访问权限后,攻击者在主机中安装软件的服务或进程(以下简侈怔理).这些代理保持睡眠状态,直到从它们的主控端得到指令,

【转载:】 查看linux下安装了哪些软件(rpm)和 rpm 常用命令

[摘自:] http://home.phpchina.com/blog-170695-186519.html       1.查看是否安装了gcc    命令 #rpm -ql gcc         #rpm -qa |grep gcc    参数:q-询问          a-查询全部          l-显示列表 2.权限    安装和删除只有root和有安装权限的用户才可以进行.查询是每个用户都可以进行操作的.   **********************************

SBackup: 一个Linux下的简单备份软件

SBackup 是一个简单易用的开源备份软件.它可以备份任意文件或者文件夹的一部分.所有的配置文件可以通过 Gnome 界面进行访问.文件和路径可以直接通过正则表达式进行添加和排除.它支持本地备份和远程备份.虽然它看起来简单,但是它有着许多常见的高级备份功能. 特点 SBackup 可以完成以下工作 可以创建压缩和未压缩的备份 可以把未压缩的备份分割成多份文件 支持多份备份配置.每个人都可以根据自己的需求创建并修改自己的配置文件,但是不能删除默认配置文件 有多种选项,如日志.邮件通知.以状态图标

Linux下两款图片编辑软件Fotoxx和Macrofusion介绍

  Fotoxx Fotoxx是一款类似 Photoshop 的开源照片编辑程序,可运行Linux系统上.支持主要的图像格式,包括JPEG,BMP,PNG,TIFF和RAW.Fotoxx主要用于裁剪,调整大小或润饰照片,而无需使用图层. 安装说明: Ubuntu 用户安装命令: 代码如下: sudo add-apt-repository ppa:dhor/myway sudo apt-get update sudo apt-get install fotoxx 卸载命令: 代码如下: sudo