strace工具的实现原理【转】】的更多相关文章

转自:http://blog.csdn.net/jasonchen_gbd/article/details/44044539 版权声明:本文为博主原创文章,转载请附上原博链接.   目录(?)[-] ptrace系统调用 使用ptrace跟踪进程 常用的request strace工具的实现原理   strace是Linux系统下的一个用来跟踪系统调用的工具,它的实现基础是ptrace系统调用.使用strace工具可以跟踪一个程序执行过程中发生的系统调用. 我这里讲到的内容有一点点和mips体系…
strace是Linux系统下的一个用来跟踪系统调用的工具,它的实现基础是ptrace系统调用.使用strace工具可以跟踪一个程序执行过程中发生的系统调用. 我这里讲到的内容有一点点和mips体系相关,不过不熟悉mips也不影响阅读. 一.ptrace系统调用 ptrace系统调用提供了一种方法来跟踪和控制进程的执行,它可以读取和修改进程地址空间中的内容,包括寄存器的值.ptrace主要用于实现断点调试和跟踪系统调用.该系统调用的原型如下: long ptrace(enum __ptrace_…
使用strace工具故障排查的5种简单方法 本文源自5 simple ways to troubleshoot using strace strace 是一个非常简单的工具,用来跟踪可执行程序的系统调用(system call).最简单的使用是,它追踪可行程序运行时的整个生命周期,输出每一个系统调用的名字,参数和返回值. 但是它还可以做更多的事情: 它可以基于系统调用或者系统调用组来过滤 它可以通过计算制定系统调用的次数,花费的时间以及成功和失败的次数来描述系统调用的使用 它可以追踪发送给进程的…
打包工具就是负责把一些分散的小模块,按照一定的规则整合成一个大模块的工具.与此同时,打包工具也会处理好模块之间的依赖关系,最终这个大模块将可以被运行在合适的平台中. 打包工具会从一个入口文件开始,分析它里面的依赖,并且再进一步地分析依赖中的依赖,不断重复这个过程,直到把这些依赖关系理清挑明为止. 从上面的描述可以看到,打包工具最核心的部分,其实就是处理好模块之间的依赖关系. 为了简单起见,minipack项目直接使用ES modules规范,接下来我们新建三个文件,并且为它们之间建立依赖: /*…
只做工作总结备忘之用. 正在烧镜像,稍总结一下进来改bug遇到的问题. 一个项目里要用到L3 switch的nat,vrrp功能,但实地测试中偶然出现write file挂死的情况,但不是必现.交付在即,于是加调试信息,反复跑配置的脚本,定位bug. 一,期初怀疑是vtysh与vrrpd进程通信出现阻塞(现象即是系统挂死). (1)因为在跑配置脚本时,出现了enable命令也挂死的情况,所以这么怀疑: (2)在vrrpd与vtysh命令传输的关键点加打印信息(注意vrrpd不要-d daemon…
什么是 strace strace是Linux环境下的一款程序调试工具,用来监察一个应用程序所使用的系统调用. Strace是一个简单的跟踪系统调用执行的工具.在其最简单的形式中,它可以从开始到结束跟踪二进制的执行,并在进程的生命周期中输出一行具有系统调用名称,每个系统调用的参数和返回值的文本行. strace有两种运行模式 一:通过它启动要跟踪的进程,在原本的命令前加上strace即可:strace ls -lh /var/log/cron 二:跟踪已经在运行的进程,在不中断进程执行的情况下,…
简介 在实际项目中,考虑到不同的数据使用者,我们经常要处理 VO.DTO.Entity.DO 等对象的转换,如果手动编写 setter/getter 方法一个个赋值,将非常繁琐且难维护.通常情况下,这类转换都是同名属性的转换(类型可以不同),我们更多地会使用 bean copy 工具,例如 Apache Commons BeanUtils.Cglib BeanCopier 等. 在使用 bean copy 工具时,我们更多地会考虑性能,有时也需要考虑深浅复制的问题.本文将对比几款常用的 bean…
思考: 提起分页查询,想必任何一个开发人员(不论是新手还是老手)都能快速编码实现,实现原理再简单不过,无非就是写一条SELECT查询的SQL语句,ORDER BY分页排序的字段, 再结合limit (页码-1),每页记录数,这样即可返回指定页码的分页记录,类似SQL如下所示: select * from table where 查询条件 order by id limit 100,100; -- 这里假设是第2页(limit 第1个值从0开始),每页100条 那如果是想将多张表的记录合并一起进行…
使用strace来执行程序,它会记录程序执行过程中调用,接收到的信号,通过查看记录结果,就可以知道程序打开哪些文件,进行哪些读写,映射哪些内存,向系统申请多少内存等信息 strace 移植 下载strace源码:strace-4.5.15.tar.bz2 解压:tar xjf strace-4.5.15.tar.bz2, 如果想要在自己板子上运行,还需要进行配置,我使用的是韦东山制作的一个补丁 strace-fix-arm-bad-syscall.patch 进行打补丁: patch -pn <…
背景 由于本人非常希望能够开发自己的游戏,所以业余时间一直在想着能不能自己一些好玩又有趣的东西出来,最近随着steam上众多独立游戏的爆发,感觉自己又燃烧了起来,所以又拾起了很久以前的一个2d引擎,决定利用业余时间进行全力开发. 该引擎基于 html5 canvas 和WebGL, 主要支持WebGL, canvas 由于性能问题目前只打算提供有限支持,由于之前曾经做过一个很简单的引擎,所以这次准备做出一个结构比较好的引擎,会陆续参考一些其他的框架,比如 PIXI ,cocos2dx-js 和秋…
申明:本文采用自己 C3P0 连接池工具进行测试 自定义的 JDBCUtils 可以获取 Connection: package com.test.utils; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javax.sql.DataSource; import com.mchange.v2.c3p0.C…
为什么关心这种技术?因为我经常听到身边搞微商.搞微信项目的朋友都在叫苦连天,由于微信域名屏蔽.微信域名被拦截.弄得他们尸横遍野,损失的连过年回家的路费都没了,曾经的叱咤风云一下变成了今日的倒亏损.腾讯对微信中推广活动的第三方网页内容管控的越来越严格,如果推广效果稍微好一些,自己的网址域名可能就会被拦截屏蔽,用户打不开页面,造成流量中断,客户的流失严重,基本处于没法搞的地步.搞微信病毒营销没啥可说的,微信如果不拿出防御手段,任凭这种现象恶劣下去,那么就不再有微信的这个生态环境了,我先来普及一下微信…
JavaWeb开发中,有时会遇到统计或管理用户登录数或者当前在线多少用户,分别都是谁的情况.当然,实现途径多种多样.下面列举一下通过session实现的一种统计. public class MySessionListener implements HttpSessionListener { /** * 创建session */ @SuppressWarnings({ "rawtypes", "unchecked" }) public void sessionCrea…
转  http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 引言 “Oops,系统挂死了..." “Oops,程序崩溃了..." “Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演.理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因.但现实情况,许多错误日志打印模凌两可,更多地描述了出错时的现象(比如"c…
转自:http://www.cnblogs.com/bangerlee/archive/2012/02/20/2356818.html 引言 “Oops,系统挂死了..." “Oops,程序崩溃了..." “Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演.理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因.但现实情况,许多错误日志打印模凌两可,更多地描述了出错时的现象(比如"c…
转载于:https://www.cnblogs.com/lidabo/p/4523755.html 引言 “Oops,系统挂死了..." “Oops,程序崩溃了..." “Oops,命令执行报错..." 对于维护人员来说,这样的悲剧每天都在上演.理想情况下,系统或应用程序的错误日志提供了足够全面的信息,通过查看相关日志,维护人员就能很快地定位出问题发生的原因.但现实情况,许多错误日志打印模凌两可,更多地描述了出错时的现象(比如"could not open file…
pt-table-checksum和pt-table-sync是常用来做MySQL主从数据一致性校验的工具,pt-table-checksum只校验数据,不能对数据进行同步:pt-table-sync不仅可以检验数据,还可以将不一致的数据同步. 工作原理 两个工具的工作原理基本差不多,分开说明.为了说明简单易懂,抛开了所有内部函数,只是简易的介绍一下工具的工作过程. pt-table-checksum工作原理 1.单行数据checksum值的计算 首先检查表结构,获取每列的数据类型,把所有类型都…
getaddrinfo工作原理分析 将域名解析成ip地址是所有涉及网络通讯功能程序的基本步骤之一,常用的两个接口是gethostbyname和getaddrinfo,而后者是Posix标准推荐在新应用中使用的接口.很好奇,getaddrinfo的工作原理,接下来就简要分析getaddrinfo函数的工作过程. 函数原型 #include<netdb.h> int getaddrinfo( const char *hostname, const char *service, const stru…
本文来自:http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQL(Oracle).Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心.我们 RDS MySQL 的物理备份就是基于这个工具做的. 项目的 blueprint 和 bug 讨论放在 Launchpad,代码之前也放在 Lau…
http://mysql.taobao.org/monthly/2016/03/07/ 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心.我们 RDS MySQL 的物理备份就是基于这个工具做的. 项目的 blueprint 和 bug 讨论放在 Launchpad,代码之前也放在 Launchpa…
http://mysql.taobao.org/monthly/2016/03/07/ MySQL · 物理备份 · Percona XtraBackup 备份原理 前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心.我们 RDS MySQL 的物理备份就是基于这个工具做的. 项目的 blueprin…
一.Selenium2的原理 Selenium1是thoughtworks公司的一个产品经理,为了解决重复烦躁的验收工作,写的一个自动化测试工具,其原理是用JS注入的方 式来模拟人工的操作,但是由于JS的同源策略,也就是JS只能在一个域中的页面进行通讯,如果跨域,则就不能访问了,所以导致了如果页面中有iframe 时,就无法操作了. Selenium2是Selenium1+WebDriver的产物: 而WebDriver是Google的产品:Google收购Selenium1之后,整合了其自己的…
前言 Percona XtraBackup(简称PXB)是 Percona 公司开发的一个用于 MySQL 数据库物理热备的备份工具,支持 MySQl(Oracle).Percona Server 和 MariaDB,并且全部开源,真可谓是业界良心.我们 RDS MySQL 的物理备份就是基于这个工具做的. 项目的 blueprint 和 bug 讨论放在 Launchpad,代码之前也放在 Launchpad,现在已经迁移到 Github 啦,项目更新发布非常快,感兴趣的可以关注 :-) 本文…
strace和gdb是Linux环境下的两个常用调试工具,这里是个人在使用过程中对这两个工具常用参数的总结,留作日后查看使用. strace调试工具 strace工具用于跟踪进程执行时的系统调用和所接收的信号,包括参数.返回值.执行时间.在Linux中,用户程序要访问系统设备,必须由用户态切换到内核态,这是通过系统调用发起并完成的. strace常用参数: -c 统计每种系统调用执行的时间.调用次数.出错次数,程序退出时给出报告 -p pid 跟踪指定的进程,可以使用多个-p同时跟踪多个进程 -…
strace工具是一个非常强大的工具,是调试程序的好工具.要移植到arm平台,就需要使用交叉编译工具编译生成静态链接的可执行文件.具体步骤如下:1.下载 strace-4.5.16     移植strace调试工具到arm平台 由Linux系统中文网(Linux521.com)编辑收集整理,除Linux521注明原创文章外,其版权归原作者所有.如果您在学习中遇到问题欢迎在下面的评论中留言,我们会尽全力解答您的问题.   strace工具是一个非常强大的工具,是调试程序的好工具.要移植到arm平台…
编写 UNIX® 系统程序充满乐趣,并且具有教育意义.使用 UNIX strace 工具和 GDB(GNU 项目调试工具),您可以真正地深入研究系统的功能,并了解组成这些功能的各种各样的程序.同时使用这两种工具,能够在查看 UNIX 计算机底层信息 的时候,给您带来更好的体验. UNIX 家族总是为用户提供了丰富的工具.UNIX 是一个工具财宝箱,有了这些工具,您不仅可以完成具有创造性的工作,还可以在深入研究该操作系统的同时得到教育和娱乐.strace(用来跟踪任何程序的系统调用)和 GDB 调…
嗅探指窃听网络中流经的数据包,这里的网络一般指用集线器或路由器组建的局域网.通过嗅探并解析数据包,便可知道数据包中的信息,一旦含有账户密码等隐私信息就可能造成个人资金损失. 嗅探数据包无法通过输入命令实现,需要使用专业的工具.嗅探原理是指让安装了嗅探工具的计算机能够接收局域网中所有计算机发出的数据包,并对这些数据包进行分析. 局域网中,数据包会广播到所有主机的网络接口,在没有使用嗅探工具之前,计算机网卡只会接收发给自己的数据包,但安装了嗅探工具后,计算机则能接收所有流经本地计算机的数据包,从而实…
黑客若想攻击目标计算机,仅靠DOS命令是无法完成的,还需要一些功能强大的入侵工具,如端口扫描工具.网络嗅探工具.木马制作工具及远程控制工具等. 一.端口扫描工具 端口扫描工具有扫描端口的功能,所谓端口扫描是指黑客通过发送一组端口扫描信息,了解目标计算机所开放的端口,这些端口对于黑客来说就是入侵通道,黑客一旦了解这些端口,就可以入侵目标计算机. 除了具有扫描计算机开放的端口功能外,端口扫描工具还具有自动检测远程或目标计算机安全性弱点的功能.使用端口扫描工具,用户可以不留痕迹的发现目标计算机中各种T…
之前在进行 微信Demo开发时曾用到过 ngrok这个强大的tunnel(隧道)工具,ngrok在其github官方页面上的自我诠释是 "introspected tunnels to localhost",这个诠释有两层含义: 1.可以用来建立public到localhost的tunnel,让居于内网主机上的服务可以暴露给public,俗称内网穿透. 2.支持对隧道中数据的introspection(内省),支持可视化的观察隧道内数据,并replay(重放)相关请求(诸如http请…
初识Visual Leak Detector 灵活自由是C/C++语言的一大特色,而这也为C/C++程序员出了一个难题.当程序越来越复 杂时,内存的管理也会变得越加复杂,稍有不慎就会出现内存问题.内存泄漏是最常见的内存问题之一.内存泄漏如果不是很严重,在短时间内对程序不会有太大的 影响,这也使得内存泄漏问题有很强的隐蔽性,不容易被发现.然而不管内存泄漏多么轻微,当程序长时间运行时,其破坏力是惊人的,从性能下降到内存耗尽,甚 至会影响到其他程序的正常运行.另外内存问题的一个共同特点是,内存问题本身…