专题 20 常用调试技术

1.gdb调试

 [unfinished]


2.strace命令

使用很多系统调用的程序常常难以查找错误,因为控制权被传递给内核以便处理系统调用。可以使用strace程序,它是跟踪使用了什么系统调用以及系统调用的结果的一种方法。

strace程序截取程序发出的系统调用并且显示它们以供查看。被跟踪的程序可以是从strace命令运行的,也可以是系统上已经运行的进程。通常只需使用strace程序默认选项生成关于程序的必要信息即可:

[fuyajun@localhostwork]$strace./hello

execve("./hello",["./hello"],[/*36vars*/])=0

write(1,"Hello,world!\n",14Hello,world!

)=14

_exit(0)命令行参数-c在程序执行之后创建一个报告,概述发出的所有系统调用,以及每个系统调用花费了多长时间。

[fuyajun@localhostwork]$strace-c./hello

Hello,world!

%timesecondsusecs/callcallserrorssyscall

--------------------------------------------------------------

100.000.0006426421execve

0.000.00000001write

--------------------------------------------------------------

100.000.0006422total


高级strace参数:

专题 20 常用调试技术_第1张图片

-e参数可以用于只显示系统调用的子集,而不是查看全部。

strace–e trace=call_list,其中,call_list是以逗号分隔的希望跟踪的系统调用的清单。


附加到正在运行的程序:

strace–p 3456



你可能感兴趣的:(list)