Linux下的两个辅助编程工具 perf 和 GDB

前几天在实验室做了几个小实验,受益匪浅,写代码倒是其次,最重要的是渐渐了解了真实的 计算机科学 工作方式。

很多工作都可以用 linux 下的工具高效完成,例如 要跑一组实验,其中有两个参数变动,那么就不需要手动运行多次,只用一个 Shell Script 就能完成。配合 awk 效率更高。

其中两个工具真得很受用,一个是 GDB, 一个是 perf。前者用于程序调试,后者用于程序性能侦测。

GDB 是linux下很出色的调试器, 很多常用的调试工具,例如 breakpoint, call stack 都有很好的实现。

对于 GDB, 推荐阅读这个 tutorial, 非常好,尤其是后面集成的针对 STL 的 pcontainer 方法。

对于之前经常发生的段错误 SF, 以及经常出现的 core dump,都能用 GDB 准确定位。只不过,在使用 g++ 编译的时候,要加上 -ggdb 参数,同时尽量不要打开优化,否则编译器很难记录每个符号。

perf 是内置在 linux 内核里的一个程序性能侦测工具。具体源码应该可以在 kernel 里找到。

之前使用一个图系统跑实验,发现多线程性能不佳,但是不能找到瓶颈,使用 perf 就能轻易看到,是 omp_barrier_wait_end,通过搜索能知道这个函数是 OpenMP 的同步方法,那么就能推断出问题出在 OpenMP 的任务分配上,不均衡的任务分配导致不均衡的计算时间。

perf 内置了多个工具,具体内容可以参看 man perf,其中最重要的两个是 report 和 record。

类似于 time 命令一样, 在程序前面加上 perf record, 可以生成一个报告,这个报告能够显示在程序此次运行里每个函数占用的时间比,一般报告的后缀名都是 .perf.data 。

生成报告之后就用 perf report,这个工具能够分析 record 生成的报告,显示具体的函数占用时间排名。

时间: 2024-12-24 17:38:49

Linux下的两个辅助编程工具 perf 和 GDB的相关文章

Linux下常用的系统性能查看分析工具

Linux中,很多很全面显示系统当前运行状态,负载,I/O等信息的工具,帮助管理员实时了解系统运行动态,以及排除故障. ps命令:显示进程状态,快照方式显示. 进程分为两类:一类是用户通过终端启动的进程,一类是与终端无关的进程,多为守护进程. ps命令支持两种风格的命令:SysV风格 BDS风格.带横线的是SysV风格. ps命令选项:     a  :与终端有关的进程     x  : 与终端无关的进程     u  : 显示是哪个用户启动的       -e : 显示所有进程     -f 

linux下C语言socket网络编程简例

转自:http://blog.csdn.net/kikilizhm/article/details/7858405 这里给出在linux下的简单socket网络编程的实例,使用tcp协议进行通信,服务端进行监听,在收到客户端的连接后,发送数据给客户端:客户端在接受到数据后打印出来,然后关闭.程序里有详细的说明,其中对具体的结构体和函数的实现可以参考其他资料. 程序说明: 这里服务器的端口号和ip地址使用固定的设置,移植时可以根据具体情况更改,可以改写为参数传递更好,这里为了方便,使用固定的. 移

Linux下取代top的进程管理工具 htop

一.htop 简介 This is htop, an interactive process viewer for Linux. It is a text-mode application (for console or X terminals) and requires ncurses. Comparison between htop and top In 'htop' you can scroll the list vertically and horizontally to see all

Linux下的两种服务:RPM包默认安装的服务和源码包安装的服务

有些软件安装到电脑上后就会有一个或多个服务出现在系统服务管理里面,比如Apache,VMware软件等就会出现在计算机服务里面,可以随系统的启动而启动,当然也可以设置不启动,等要用了的时候再去启动,(可以在运行里面输入services.msc直接打开服务列表),但是有些软件安装到电脑后不会有什么服务生成,比如我们的聊天工具QQ. Linux下有两种服务,一种是RPM包默认安装的服务,一种是源码包安装的服务. RPM默认安装的服务在/etc/rc.d/init.d/文件下,执行service sm

Linux下方便的块设备查看工具lsblk

之前在Linux下看有什么块设备,通常都用fdisk什么的或者直接ls /dev/ 去看很不方便. 这个工具属于util-linux-ng包,在RHEL 6.1上是安装好的啦,直接用就好. ubuntu高版本下也有. 这个工具最大的特别是把所有的块设备列出,而且还能显示他们之间的依赖关系 "lsblk"就是列出块设备.除了RAM外,以标准的树状输出格式,整齐地显示块设备. [email protected]:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE M

Linux下配置两个或多个Tomcat启动

Linux下配置两个或多个Tomcat启动 (2012-08-14 11:59:31) 转载▼ 标签: 杂谈 分类: linux_tomcat 步骤如下: (1)修改/etc/profile文件.添加一组java环境变量,和两组CATALINA环境变量(我没有进行此步骤的设置,可能因为我的Tomcat是免安装版的吧)记得修改完要使其生效,用命令:source /etc/profile JAVA_HOME=/usr/java/jdk1.7.0 PATH=$JAVA_HOME/bin:$PATH C

linux下监控用户操作记录的工具

linux下监控用户操作记录的工具: apt-get install bsdutils mkdir /opt/operation_log chmod 777 -R /opt/operation_log vi /etc/profile exec script -t 2> /opt/operation_log/$USER-$UID-date +%F-%T.data -a -q -f /opt/operation_log/$USER-$UID-date +%F-%T.log :wq source /e

记录 Linux 下的好用的终端工具

1.使用 wget 抓取网站 比如,我想抓取 www.isi.edu/nsnam/ns/tutorial 里面的所有内容,那么输入 wget -r -p -np -k -E http://www.isi.edu/nsnam/ns/tutorial 那么 wget 会把 www.isi.edu/nsnam/ns/tutorial 里的所有内容抓取下来,按照网站的存储结构存储到当前的路径下. 2.使用 rename 批量修改文件后缀名(拓展名) 从 微软网站上下载的主题包(themepack格式)默

Linux 下編輯 PDF 檔的工具(PDF editor under Linux)(转载)

转自:http://www.gtwang.org/2011/05/linux-pdf.html PDF 檔雖然是一個跨平台的檔案格式,但 Adobe 只有提供免費的 Adobe Reader,要看 PDF 檔是沒有問題,但常常我們會需要對 PDF 檔做一些簡單的編輯,光靠 Adobe Reader 就沒有辦法處理,例如取出 PDF 檔中的某幾頁,或是將兩個 PDF 檔合併成一個 PDF 檔等,這些動作雖然簡單,但是 Adobe Reader 卻都沒有提供,有時也是很困擾. 這裡介紹一些在 Lin