28、应用调试之strace命令来跟踪系统调用
strace是个工具,在使用时需要先按照,见韦东山书籍:
1、tar xjf starce-4.5.15.tar.bz2
2、cd strace-4.5.15/
3、patch -p1 < ../strace-fix-arm-bad-syscall.patch
4、./configure --host=arm-linux CC=arm-linux-gcc
5、make
会在strace-4.5.15目录下生成一个名为strace的可执行程序,将它复制到开发板根文件系统的bin中即可使用
简单使用举例:
1、执行strace -o log.txt ./firstdrv on
2、参看log.txt可以参看应用程序执行过程中调用了哪些系统调用和调用库的过程
strace使用可以跟踪开发板上执行的所有指令,只需要在指令前面加上strace -o log.txt
strace用法的原理:strace是父进程,执行的指令是子进程,应用程序执行时的read等系统调用就是产生一个swi #val异常指令,进入内核异常处理函数ENTRY(vector_swi)中,内核根据val调用相应的sys_read函数
adr tbl, sys_call_table //sys_call_table 包含有各个系统调用,是通过在ENTRY(sys_call_table)
#include "calls.S"的方式来定义系统跳转标的
‘’‘’
ldrcc pc, [tbl, scno, lsl #2] @ call sys_* routine //根据scno执行响应的系统调用
内核中ENTRY(vector_swi)在执行的时候,其里面有个判断语句“tst ip,#_TIF_SYSCALL_TRACE”应该是根据某个标志位测试应用程序是否被父进程跟踪,如果被跟踪,调用__sys_trace,接着调用syscall_trace ,会给父进程发信号,并且休眠,等待父进程相应后(比如记录系统调用)子进程才继续执行

28、应用调试之strace命令来跟踪系统调用的更多相关文章
- strace命令跟踪进程
在实际系统维护过程中,常常需要知道一个进程在做哪些动作,比如想判断一个进程是否hang,我们可以使用strace命令,此命令式用来跟踪一个进程在调用哪些系统函数和信号 通过跟踪xinetd进程演示st ...
- 使用 Linux 的 strace 命令跟踪/调试程序的常用选项
原文:http://linoxide.com/linux-command/linux-strace-command-examples/作者: Raghu 在调试的时候,strace能帮助你追踪到一个程 ...
- 使用strace命令跟踪系统调用
一.是什么strace? strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由 ...
- inux跟踪线程的方法:LWP和strace命令
摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来.这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手 ...
- linux跟踪线程的方法:LWP和strace命令
摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来.这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手 ...
- 39.Linux应用调试-strace命令
1.strace简介 strace常用来跟踪进程执行时的系统调用和所接收的信号.通过strace可以知道应用程序打开了哪些文件,以及读写了什么内容,包括消耗的时间以及返回值等 2.安装strace命令 ...
- Linux应用调试-strace命令
1.strace简介 strace常用来跟踪进程执行时的系统调用和所接收的信号.通过strace可以知道应用程序打开了哪些文件,以及读写了什么内容,包括消耗的时间以及返回值等 2.安装strace命令 ...
- 主机管理+堡垒机系统开发:strace命令用法详解(六)
一.简单介绍 strace是什么? 按照strace官网的描述, strace是一个可用于诊断.调试和教学的Linux用户空间跟踪器.我们用它来监控用户空间进程和内核的交互,比如系统调用.信号传递.进 ...
- Linux strace命令
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...
随机推荐
- css相关用法
1. 2. 3.offset([coordinates]) 获取匹配元素在当前视口的相对偏移. 返回的对象包含两个整型属性:top 和 left,以像素计.此方法只对可见元素有效. a.获取当前元素的 ...
- jq实现回车键执行方法
$(function(){ $(document).keypress(function (e){ if(e.keyCode == 13){ //执行你想执行的方法,keyCode代表不同的按键 } } ...
- 软考之路--从生活着手,看PV怎样操作
PV操作.是软考其中一个非常重要的考点,一听到这个名词,顿时赶脚高大上有么有,在软考的历年试题中,也不乏PV操作的身影,老师也对PV操作进行了一次讲课,那时年少.听得稀里糊涂,也不是非常理解,在小编的 ...
- absolute、relative,toggle()
測试代码例如以下: <div> <div class="global">不应用样式</div> <div class="glob ...
- 利用zip格式实现手机客户端二维码扫描分享识别
场景: 用户A想要将某应用推荐给用户B,用户B扫描用户A的手机app中的二维码进行下载和安装, 并且需要识别用户B是扫描了用户A的二维码,进而给用户A一定的奖励. (例如:健一网app) zip格式: ...
- eclipse个人插件
1.SVN eclipse markets 安装m2e-subversion.svnkit 2.maven 本地装好mvn prefences导入maven安装目录和配置 3.单元测试覆盖率 EclE ...
- List-ArrayList 使用
今天优化一段代码,如下 int num = 0; boolean skipAppend = false; int types_ext1[] = new int[] { ModuleType.TYPE_ ...
- 1.25 Python知识进阶 - 封装
封装 示例代码: class Role(object): count = 0 def __init__(self,name,role,weapon,life_value=100,money=15000 ...
- jmeter--FTP测试
FTP服务主要提供上传和下载功能.有时间需要我们测试服务器上传和下载的性能.在这里我通过JMeter做一个FTP测试计划的例子. 当然,JMeter官方网站的用户手册也有例子,但由于版本较早,我也算是 ...
- 文字记录而已!!人民币直充/兑换PayPal美金
人民币直充/兑换PayPal美金 用PAYPAL国际使用外国货币,没有信用卡是不能冲值的,到淘宝买吧,被骗的几率大一些,弄来弄去,PAYPAL被冻结. 今天朋友介绍使用 中美互动网 让它给自己的PAY ...