随笔分类 - 系统调试
介绍一些linux系统的调试工具使用办法,比如strace, gdb
摘要:转载自:http://linux.chinaunix.net/techdoc/net/2007/03/27/953429.shtmlltrace的功能是能够跟踪进程的库函数调用,它是如何实现的呢?在ltrace源代码从chinaunix.net中下载下来,做了一个粗略的分析。ltrace其实也是基于ptrace。我们知道,ptrace能够主要是用来跟踪系统调用,那么它是如何跟踪库函数呢?首先ltrace打开elf文件,对其进行分析。在elf文件中,出于动态连接的需要,需要在elf文件中保存函数的符号,供连接器使用。具体格式,大家可以参考elf文件的格式。这样ltrace就能够获得该文件中,所有
阅读全文
摘要:转载自:http://5iwww.blog.51cto.com/856039/771031strace 是一个非常简单的工具,用来跟踪可执行程序的系统调用(system call)。最简单的使用是,它追踪可行程序运行时的整个生命周期,输出每一个系统调用的名字,参数和返回值。但是它还可以做更多的事情:它可以基于系统调用或者系统调用组来过滤它可以通过计算制定系统调用的次数,花费的时间以及成功和失败的次数来描述系统调用的使用它可以追踪发送给进程的信号(signal)它可以通过进程id(pid)号加入到任意正在运行的进程上如何使用找出一个程序启动时读取了哪个配置文件有的时候,你发发现,无论你如何修改配
阅读全文
摘要:strace(用来跟踪任何程序的系统调用)和 GDB 调试工具(用来在受控的环境中运行程序的功能齐全的调试工具)strace 专注于监控一个程序系统调用和它接受到的所有信号(与Unix系统上的truss是一样的),使用的是内核系统调用ptrace。另外,还有类似的ltrace(同样是基于ptrace的),它功能是能够跟踪进程的库函数调用。gdb比starce能做的事情更多,比如gdb可以获得堆栈跟踪信息,堆栈跟踪不仅会告诉你程序当前正在做什么,有底层的信息(如等待网络套接字),也有较高级别的信息(如正在执行什么类型的网络操作)。下面是使用过程中一些命令小结:strace调试工具strace工具
阅读全文

浙公网安备 33010602011771号