进程调试
————————————————————————————————
gdb 程序交互调试
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具
从一个完整的调试过程简单说明最基本的几个命令:
gdb programmer # 启动gdb
break main # 设置断点
run # 运行调试程序
next # 单步调试
print var1 # 在调试过程中,我们需要查看当前某个变量值的时候,使用print 命令打印该值
list # 显示当前调试处的源代码
info b # 显示当前断点设置情况
————————————————————————————————
pstack 跟踪栈空间
pstack是一个脚本工具,可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行
pstrack <program-pid>
————————————————————————————————
strace 分析系统调用
strace常用来跟踪进程执行时的系统调用和所接收的信号
Linux进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备
strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间
比如:
跟踪28979进程的所有系统调用(-e trace=all),花费时间,以及开始时间,最后将记录结果存在output.txt文件里面
strace -o output.txt -T -tt -e trace=all -p 28979
查看进程正在做什么
strace -p <process-pid>
————————————————————————————————
gdb 程序交互调试
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具
从一个完整的调试过程简单说明最基本的几个命令:
gdb programmer # 启动gdb
break main # 设置断点
run # 运行调试程序
next # 单步调试
print var1 # 在调试过程中,我们需要查看当前某个变量值的时候,使用print 命令打印该值
list # 显示当前调试处的源代码
info b # 显示当前断点设置情况
————————————————————————————————
pstack 跟踪栈空间
pstack是一个脚本工具,可显示每个进程的栈跟踪。pstack 命令必须由相应进程的属主或 root 运行
pstrack <program-pid>
————————————————————————————————
strace 分析系统调用
strace常用来跟踪进程执行时的系统调用和所接收的信号
Linux进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备
strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间
比如:
跟踪28979进程的所有系统调用(-e trace=all),花费时间,以及开始时间,最后将记录结果存在output.txt文件里面
strace -o output.txt -T -tt -e trace=all -p 28979
查看进程正在做什么
strace -p <process-pid>