当前位置: 首页 > Linux

今天给大家分享一下基于Linux调试工具strace和gdb的常用命令汇总

时间:2023-04-06 03:41:06 Linux

strace和gdb是Linux环境下常用的两种调试工具。以备将来使用。strace调试工具strace工具用于跟踪进程执行过程中的系统调用和接收到的信号,包括参数、返回值和执行时间。在Linux中,用户程序必须从用户态切换到内核态才能访问系统设备,这是通过系统调用发起和完成的。常用的strace参数:-c  统计每次系统调用的执行时间、调用次数、错误,程序退出时上报-ppid  跟踪指定进程,多个-p可以用于同时跟踪多个进程-ofilename  strace默认输出到stdout,-o可以将输出写入指定文件-f  跟踪fork生成的子进程的系统调用-ff  经常和-o选项一起使用,将不同进程(子进程)产生的系统调用输出到每个filename.pid文件中-F  尝试跟踪vfork子进程的系统调用,注意:与-f同时使用时,不跟踪vfork-eexpr  输出过滤表达式,可以过滤掉不想输出的strace结果-etrace=set  指定系统调用在跟踪集中-etrace=network  跟踪所有与网络相关的系统调用-estrace=signal  跟踪所有与系统信号相关的系统调用-etrace=ipc  跟踪所有与网络相关的系统调用processcommunication-esignal=set  指定trace集合中的信号-eread=set  输出从指定文件读取的数据,例如-eread=3,5-ewrite=set  输出写入指定文件的数据,例如-ewrite=1-r  打印每次系统调用的相对时间-t  在输出的每一行前添加时间信息-tt  add在输出每行前添加时间信息,时间精确到微秒级-ttt  在输出每行前添加时间信息,输出为相对时间-s  指定每行输出字符串的长度(默认为32)strace使用示例:strace-twhoami#跟踪whoami可执行程序,输出每行前打印执行时间strace-p17151-p17152-p17153#跟踪同时Process17151,17152,17153strace-f-etrace=read,write-p17151-olog#跟踪进程17151及子进程中的读写系统调用,输出到日志文件gdb调试工具GDB是由GNU开源组织发布的一款强大的UNIX下程序调试工具。在gcc编译时加入-g参数,可以在可执行程序中加入gdb调试信息。(1)info缩写:i,列出gdb子命令的信息,如infobreak,infovariables,infostack等。(2)list[file:]function的简写:l,查看当前行的上下文,默认10行,也可以设置在某个函数处列出源码。(3)编辑[file:]函数缩写:e,编辑当前行,或者编辑某个函数的源代码。(4)break[file:]function的简写:b,设置断点,可以设置在某行或某个函数。(5)run[arglist]缩写:r,运行程序到断点处停止,在run命令后可以添加调试程序所需要的参数。(6)next的简写:n,执行单条语句。(7)continue简写:c,继续运行程序到下一个断点。(8)打印缩写:p,打印变量的值。(9)bt查看函数堆栈信息。(10)回车键重复上次的调试命令。(11)help[name]显示指定gdb命令的帮助信息。(12)quit缩写:q,退出gdb。