Linux调试合集(宏,gdb,gprof)
一 linux内置宏
1 __TIME__ 显示当前时间 类型%s
2 __FILE__ 显示当前文件 类型%s
3 __DATE__ 显示当前日期 类型%s
4 __LINE__ 显示当前行数 类型%d
5 __FUNCTION__ 显示当前函数 类型%s
注:“__”是两个下划线
示例代码 demo2.c
#include <stdio.h>int main(int argc,char **argv)
{printf("time = %s\n",__TIME__);printf("file = %s\n",__FILE__);printf("date = %s\n",__DATE__);printf("line = %d\n",__LINE__);printf("func = %s\n",__FUNCTION__);return 0;
}
结果
二 gdb调试
gdb调试步骤:
1,先把文件编译为可执行文件(如对test.c进行编译:gcc -g -o demo demo2.c);
2,在终端输入gdb 后回车
3,接着输入file test 后回车,之后进入调试过程
4,调试过程,根据需要可对代码进行查看或操作
gdb基本指令:
l 显示源代码
b 设置断点
i 查看信息,如i b查看设置的断点信息
n 执行下条语句
r 运行程序
p 打印变量值,如p sum 打印变量sum的值
q 退出gdb调试
示例代码 demo2.c
#include <stdio.h>int main(int argc,char **argv)
{printf("time = %s\n",__TIME__);printf("file = %s\n",__FILE__);printf("date = %s\n",__DATE__);printf("line = %d\n",__LINE__);printf("func = %s\n",__FUNCTION__);return 0;
}
gcc -g -o test2 demo2.c
gdb
file test2
l
b 6
r
n
q
三 代码剖析
编译的时候加入-pg选项
gcc -pg demo2.c -o test2
di@ubuntu: ./test2
di@ubuntu: ls
di@ubuntu: test2 gmon.out
gprof test2
注:
其中主要的信息有两个,一个是每个函数执行的时间占程序总时间的百分比,另外一个就是函数被调用的次数。通过这些信息,可以优化核心程序的实现方式来提高效率。
当然这个剖析程序由于它自身特性有一些限制,比较适用于运行时间比较长的程序,因为统计的时间是基于间隔计数这种机制,所以还需要考虑函数执行的相对时间,如果程序执行时间过短,那得到的信息是没有任何参考意义的。
在使用gprof工具的时候,对于一个函数进行gprof方式的剖析,实质上的时间是指除去库函数调用和系统调用之外,纯碎应用部分开发的实际代码运行的时间,也就是说time一项描述的时间值不包括库函数printf、系统调用system等运行的时间。这些实用库函数的程序虽然运行的时候将比最初的程序实用更多的时间,但是对于剖析函数来说并没有影响。
Linux调试合集(宏,gdb,gprof)相关推荐
- 玩转Linux命令-合集
玩转Linux命令-合集 前言 Linux 系统目录结构 Linux命令 常用命令 前言 该博客用于记录 Linux 使用过程中遇到的命令,将会持续更新. 未更新的命令可参考:here Linux 系 ...
- Plant Simulation、NX MCD、PDPS,SIMIT,PLCSIM仿真与虚拟调试合集(持续更新中)
一文了解PLCSIM.SIMIT.Amesim.NX MCD. Process Simulate.Plant Simulation等仿真与虚拟调试软硬件: 一文了解PLCSIM.SIMIT.Amesi ...
- 转载-好用的linux软件合集
音频 Airtime – Airtime 是一款用于调度和远程站点管理的开放广播软件 Ardour – 在 Linux 上录音,编辑,和混音 Audacious – 开源音频播放器,按你想要的方式 ...
- 常用的Linux命令合集,建议收藏保存!
Linux是现在服务器系统最常用的系统,基于unix开源免费,系统稳定性非常高,所以才被更多的服务器所采用.今天小千就来给大家介绍一些比较常用的Linux指令,方便大家操作和学习. 一.linux 的 ...
- 2、Linux命令合集
1.GNU 1.1简介 GNU : gnu is not unix GPL : GUN通用公共许可证 Linux的发行版本:Ubuntu,redhat,debain,红旗. Linux的核心观念:&q ...
- Linux入门合集(入门一篇就够了!)
Linux基础教程 总目录 Ubuntu18.04LTS安装与优化 Linux基础 Markdown Vim 1. Ubuntu18.04LTS安装与优化 目录 准备 下载光盘映像 启动盘刻录 分区准 ...
- 常用的35个Linux命令合集
1.ls显示文件或目录内容 ls:列出文件和文件夹名(文件夹蓝色.普通文件白色.压缩包红色.图片粉色) ls -a:展示隐藏的文件,通常以 . 开头. ls --help:引出全部命令 ls -s:展 ...
- RabbitMQ下载安装(windows版本+linux版本合集)
一.安装erlang语言环境:(注:因RabbitMQ服务是由Erlang语言开发的) Window版本安装erlang 官网下载地址:https://www.erlang.org/downloads ...
- Linux命令合集,手动精修
系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) ...
最新文章
- QueryRunner 错误
- linux系统中 库分为静态库和,你知道linux 静态库和共享库?
- Kafka学习 之 第一个例子(一)
- 《SAS编程与数据挖掘商业案例》学习笔记之十一
- Linux环境下安装Mysql5.7
- 【MOS】Redundant Interconnect ora.cluster_interconnect.haip (文档 ID 1210883.1)
- 2021年,某云盘最新版不限速下载工具教程,亲测有效!
- Excel复制的数据到文本文件里面有 双引号
- 大学四年我是如何学习程序设计的
- 深度学习训练营之灵笼人物识别
- 删除Karabiner-Elements 和 Karabiner-EventViewer提示项目被锁定
- golang数据结构初探之管道chan
- windows下x265编译
- 中国石油大学(北京)-《中国近现代史纲要》第二阶段在线作业
- 深度剖析C语言结构体
- zabbix php ldap支持,安装zabbix时PHP ldap Warning
- 建立内部动态DNS服务器
- Java下载jar包
- ActiveSkin 4.3 软件换肤
- eclipse代码中文乱码解决方法