基于Linux的调试信息和gdb常用命令总结
Strace调试器
strace工具是用来跟踪系统调用和接收的信号执行该过程时,包括参数、返回值和执行时间。在Linux,用户程序访问系统设备必须从用户状态切换到内核态,这是发起和完成的系统调用。
strace常用参数:
C统计每个系统调用的时间、调用次数和执行时间,并在程序退出时给出报告。
p跟踪指定的进程,多个P可以同时跟踪多个进程。
o文件信息输出到stdout默认和O可以将输出写入指定的文件
F跟踪所产生的子进程的系统调用fork
FF是经常使用-o选项,与系统调用产生的不同过程(子过程)出口到不同的filename.pid文件
F试图跟踪vfork子进程的系统调用,并注意vfork不跟踪时使用F
e表达式输出滤波器的表达式,可以过滤掉不想要的信息结果输出
在跟踪集中指定系统调用。
- e =网络跟踪与网络相关的所有系统调用
E strace =信号跟踪所有系统调用系统相关的信号
- e = IPC跟踪与进程通信相关的所有系统调用
e指定集合中的信号。
e读=设置输出数据读取指定的文件,如电子阅读= 3
E =写集输出被写入指定文件中的数据,如E =写1。
r打印每个系统调用的相对时间。
-输出和时间信息中的每一行
TT每行输出和时间信息,时间精确到微秒。
- TTT在输出和时间信息,每一行的相对时间输出
s指定每行输出字符串的长度(默认值为32)。
strace使用例子:
信息不显示用户#跟踪显示用户可执行的程序,每行打印输出结果的执行时间之前
strace P 17151 P 17152 P 17153 # 17151, 17152, 17153跟踪过程
strace·F·E微量=读,读写和写日志P O 17151系统17151 #跟踪过程和子过程调用,输出到日志文件
GDB调试器
GDB是一个强大的UNIX程序开源组织由GNU开源organization.gcc编译时加G参数可以添加gdb调试信息的可执行程序,调试工具下释放。
(1)信息
速记:我列出的GDB分区的信息,如信息中断,信息变量,堆栈等信息,
(2)列表{文件}函数
简写:l,查看当前行的上下文,默认为10行,并在函数中设置源代码。
(3)编辑{文件}函数
简写:e,编辑当前行,编辑函数的源代码。
(4)中断{文件}函数
缩写:B,设置断点,可以设置在某一行或某个函数上。
(5)运行{阿格列斯}
简写:R,运行程序在断点处停止,运行命令可以添加到调试器需要的参数中。
(6)下一步
缩写:n,单语句执行。
(7)继续
速记:C,继续把程序运行到下一个断点。
(8)打印
简写:p,打印变量的值。
(9)bt
查看函数堆栈信息。
(10)进入
返回键,重复上次调试命令。
(11)帮助{ }
显示指定的GDB命令的帮助信息。
(12)退出
速记:Q,退出GDB。