基于Linux调试工具strace与gdb的常用命令总结
作者:缪宇驰 | 来源:互联网 | 2018-04-02 18:41
本篇文章是对Linux调试工具strace与gdb的常用命令进行了总结与分析,需要的朋友参考下
strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用。
strace调试工具
strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数、返回值、执行时间。在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的。
strace常用参数:
-c 统计每种系统调用执行的时间、调用次数、出错次数,程序退出时给出报告
-p pid 跟踪指定的进程,可以使用多个-p同时跟踪多个进程
-o filename strace默认输出到stdout,-o可以将输出写入到指定的文件
-f 跟踪由fork产生的子进程的系统调用
-ff 常与-o选项一起使用,不同进程(子进程)产生的系统调用输出到各个filename.pid文件中
-F 尝试跟踪vfork子进程系统调用,注意:与-f同时使用时, vfork不被跟踪
-e expr 输出过滤表达式,可以过滤掉不想输出的strace结果
-e trace=set 指定跟踪set中的系统调用
-e trace=network 跟踪与网络有关的所有系统调用
-e strace=signal 跟踪所有与系统信号有关的系统调用
-e trace=ipc 跟踪所有与进程通讯有关的系统调用
-e signal=set 指定跟踪set中的信号
-e read=set 输出从指定文件中读出的数据,例如-e read=3,5
-e write=set 输出写入到指定文件中的数据,例如-e write=1
-r 打印每一个系统调用的相对时间
-t 在输出中的每一行前加上时间信息
-tt 在输出中的每一行前加上时间信息,时间精确到微秒级
-ttt 在输出中的每一行前加上时间信息,输出为相对时间
-s 指定每一行输出字符串的长度(默认为32)
strace使用举例:
strace -t whoami #跟踪whoami可执行程序,每行输出结果前打印执行的时间
strace -p 17151 -p 17152 -p 17153 #同时跟踪进程17151、17152、17153
strace -f -e trace=read,write -p 17151 -o log #跟踪进程17151及子进程中read和write系统调用,输出到log文件
gdb调试工具
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。gcc编译时加上-g参数,可以使可执行程序加上gdb调试信息。
(1)info
简写:i,列出gdb子命令的信息,如info break,info variables,info stack等。
(2)list [file:]function
简写:l,查看当前行的上下文,默认为10行,也可以设置在某个函数处列出源码。
(3)edit [file:]function
简写:e,编辑当前所在的行,也可以编辑某个函数的源码。
(4)break [file:]function
简写:b,设置断点,可以设置在某行或某个函数处。
(5)run [arglist]
简写:r,运行程序至断点处停住,run命令之后可以加上调试程序需要的参数。
(6)next
简写:n,单条语句执行。
(7)continue
简写:c,继续运行程序至下一个断点。
(8)print
简写:p,打印变量的值。
(9)bt
查看函数堆栈信息。
(10)enter
回车键,重复上一次调试命令。
(11)help [name]
显示指定的gdb命令的帮助信息。
(12)quit
简写:q,退出gdb。
推荐阅读
-
本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ...
[详细]
蜡笔小新 2024-12-28 10:25:18
-
本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ...
[详细]
蜡笔小新 2024-12-28 09:42:41
-
-
本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ...
[详细]
蜡笔小新 2024-12-27 19:31:05
-
1.如何在运行状态查看源代码?查看函数的源代码,我们通常会使用IDE来完成。比如在PyCharm中,你可以Ctrl+鼠标点击进入函数的源代码。那如果没有IDE呢?当我们想使用一个函 ...
[详细]
蜡笔小新 2024-12-27 18:36:54
-
2019独角兽企业重金招聘Python工程师标准一、先在cmake官网下个最新的cmake源码包cmake官网:https:www.cmake.org如此时最新 ...
[详细]
蜡笔小新 2024-12-27 17:49:56
-
本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ...
[详细]
蜡笔小新 2024-12-27 17:31:41
-
本章节深入浅出地介绍了Linux系统中的基本命令操作,帮助读者快速上手并理解其核心功能。 ...
[详细]
蜡笔小新 2024-12-27 17:15:39
-
本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ...
[详细]
蜡笔小新 2024-12-27 16:44:26
-
本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ...
[详细]
蜡笔小新 2024-12-27 16:33:32
-
在哈佛大学商学院举行的Cyberposium大会上,专家们深入探讨了开源软件的崛起及其对企业市场的影响。会议指出,开源软件不仅为企业提供了新的增长机会,还促进了软件质量的提升和创新。 ...
[详细]
蜡笔小新 2024-12-27 14:49:56
-
本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ...
[详细]
蜡笔小新 2024-12-27 14:43:56
-
本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ...
[详细]
蜡笔小新 2024-12-27 14:38:54
-
本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ...
[详细]
蜡笔小新 2024-12-27 13:47:38
-
本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ...
[详细]
蜡笔小新 2024-12-27 13:19:53
-
本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ...
[详细]
蜡笔小新 2024-12-27 10:18:13
-