`

使用ltrace跟踪PHP库函数调用

    博客分类:
  • php
阅读更多
可能大家已经很熟悉使用strace来跟踪系统调用,今天介绍一个跟踪库函数的利器ltrace

比如我有这么一段PHP代码
test.php
<?php
  $y = '1380';
  $arr = array();
 
  for($i = 0; $i < 2000; $i ++){
      $arr[] = "{$i}"; //故意用引号包起来设成字符串
  }

  for($i = 0; $i < 2000; $i ++){
      if(!in_array($y, $arr)) continue;
  }
?>

ltrace -c /usr/local/php/bin/php test.php (-c表示汇总)
会看到输出如下:

% time     seconds  usecs/call     calls      function
------ ----------- ----------- --------- --------------------
95.02    7.417240         368     20146 strtol
2.15    7.160390         413     17316 memcpy
1.63    5.522641         240     22966 free
  0.67    2.275374     2275374         1 curl_global_cleanup
  0.54    2.235466         617      3618 __ctype_tolower_loc
  0.16    2.123547        1194      1778 strrchr
  0.17    1.532224          67     22836 malloc
  0.29    0.382083          67      5678 strlen


可以看到 strtol几乎用去了执行时间的95.02%,瓶颈就找出来了。及PHP会在in_array()测试时试图将字符串行数字转换为long,这会耗费大量时间。所以只要将字符串都转换为整形即可大幅度提高效率。

ltrace真心是个好工具
分享到:
评论

相关推荐

    使用ltrace工具跟踪PHP库函数调用的方法.pdf

    在本篇中,我们将深入探讨如何使用 `ltrace` 来跟踪 PHP 库函数调用,以及如何通过它来定位性能瓶颈。 首先,`ltrace` 是类似 `strace` 的工具,但它的重点在于跟踪应用程序对共享库的调用,而不是操作系统级别的...

    使用ltrace工具跟踪PHP库函数调用的方法.docx

    本篇文章将详细介绍如何使用`ltrace`工具来跟踪PHP的库函数调用,并通过一个具体的PHP示例来展示其应用。 首先,我们需要确保系统已经安装了`ltrace`工具。在大多数Linux发行版中,可以通过包管理器(如`apt-get`、...

    使用ltrace工具跟踪PHP库函数调用的方法

    本文主要介绍如何使用ltrace工具来跟踪PHP程序中的库函数调用,以及如何分析输出结果来诊断程序性能瓶颈。 首先,要使用ltrace来跟踪PHP脚本,可以通过在命令行中执行如下命令格式: ``` ltrace -c php script.php ...

    linux下的程序调试工具ltrace和strace终版.pdf

    ltrace 工具可以帮助开发者了解程序的库函数调用过程,从而 debug 和优化程序。 使用 ltrace 工具可以通过以下命令来实现: ltrace ./hello 其中,hello 是要调试的程序。ltrace 工具将跟踪 hello 程序的库函数...

    linux下的程序调试工具ltrace和strace借鉴.pdf

    ltrace适用于需要理解程序如何使用库函数的情况,而strace则更适合于排查与系统资源交互相关的问题。在实际使用中,开发者可以根据需要选择使用哪一个工具,或者结合两者来获取更全面的调试信息。 在复杂的情况下,...

    Linux教程-使用truss、strace或ltrace诊断软件

    例如,`ltrace -p 234` 将跟踪pid为234的进程的库函数调用。 这三个工具的工作原理基本相同,它们都利用ptrace系统调用来跟踪目标进程。ptrace允许一个进程(调试器)监视和控制另一个进程(被调试进程)的系统...

    ltrace_0.5.3.orig.tar.gz

    ltrace 是一个开源工具,它的主要功能是对Linux系统上的动态链接程序进行运行时调用跟踪。通过监控进程的系统调用和库函数调用,ltrace能够提供关于程序运行时行为的详细信息,这对于调试、性能分析和学习程序内部...

    深入Linux内核:使用ltrace揭示库调用的秘密

    3. **Web开发**:使用Linux作为服务器操作系统进行Web开发,包括后端服务的搭建和维护,如使用LAMP(Linux, Apache, MySQL, PHP)或LEMP(Linux, Nginx, MySQL, PHP/Python/Perl)等技术栈。 4. **数据库开发**:在...

    使用truss、strace或ltrace诊断软件问题.pdf

    - **ltrace** 主要用于跟踪进程调用库函数的情况,最初出现在GNU/Debian Linux中,同样也在许多Unix系统中被广泛应用。 这三种工具虽然各有侧重,但它们都能够帮助开发者深入了解进程内部的行为,从而更准确地找出...

    深入Linux系统调用跟踪:策略、工具与实践

    本文将详细介绍Linux系统中进行系统调用跟踪的方法,包括使用各种工具和技术。 Linux系统中有多种工具和技术可以用于跟踪系统调用,包括strace、ltrace、auditd、systemtap、perf和bpftrace。每种工具都有其特点和...

    Linux的服务器常用命令[定义].pdf

    * ltrace:跟踪进程库函数调用 十四、系统信息命令 * sysinfo:显示系统信息 * uname:显示系统信息 * uptime:显示系统运行时间 * w:显示当前用户信息 Linux服务器常用命令涵盖了目录操作、光盘、归档、文件...

    dtrace for MAC

    - **与 ltrace 对比**:ltrace 专注于库函数调用,而 DTrace 的范围更广,可以覆盖整个系统层面。 #### 知识点六:未来发展趋势 随着 MacOS 的不断发展和完善,DTrace 也在不断进步。未来版本可能会引入更多新特性...

    五个 Linux 下用户空间的调试工具-技术 ◆ 学习_Linux1

    而`ltrace`则追踪库函数调用,这对于理解程序如何使用共享库功能非常有帮助。这两个工具无需修改源码,可以直接对运行中的程序进行动态监控。 4. **Valgrind(内存检测工具)** Valgrind是一款强大的内存错误检测...

    linux测试追踪工具

    其次,strace是另一个强大的系统调用跟踪工具。它允许我们监视一个进程的系统调用,包括打开、关闭、读取、写入文件,以及网络通信、信号处理等操作。与ltrace不同,strace关注的是进程与内核之间的交互,而非应用与...

    【嵌入式软件工程师面经】Linux系统编程(线程进程).pdf

    27. **跟踪程序的系统调用和库函数调用**:使用`strace`跟踪系统调用,使用`ltrace`跟踪库函数调用。 28. **异步I/O操作**:允许程序在等待I/O操作完成的同时继续执行其他任务。 29. **OOM Killer**:当系统内存不足...

    ltrace_0.7.3.orig.tar.bz2

    ltrace_0.7.3.orig.tar.bz2

    Python-Linux跟踪工具研讨会的实例和动手实验室

    1. **strace**:这是一个系统调用跟踪器,用于查看进程与内核之间的交互。通过strace,我们可以看到进程执行的每个系统调用及其参数,这对于排查I/O问题、权限错误和系统资源使用情况很有帮助。 2. **ltrace**:与...

    Debug hack中文版

    4. ltrace:ltrace用于跟踪程序的库函数调用,和strace有点类似,但它专注于跟踪动态链接库的函数调用,而不是系统调用。它可以帮助开发者了解程序中对动态链接库函数的使用情况,这对于调试复杂的应用程序特别有...

    linux内核编程2.rar

    同时,使用`strace`和`ltrace`跟踪系统调用和库函数调用也有助于调试。 9. **安全与稳定性**:内核编程必须考虑安全性,防止意外的内存破坏、权限提升等攻击。了解内核安全模型,如地址空间布局随机化(ASLR)、非...

Global site tag (gtag.js) - Google Analytics