可能大家已经很熟悉使用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 库函数调用,以及如何通过它来定位性能瓶颈。 首先,`ltrace` 是类似 `strace` 的工具,但它的重点在于跟踪应用程序对共享库的调用,而不是操作系统级别的...
本篇文章将详细介绍如何使用`ltrace`工具来跟踪PHP的库函数调用,并通过一个具体的PHP示例来展示其应用。 首先,我们需要确保系统已经安装了`ltrace`工具。在大多数Linux发行版中,可以通过包管理器(如`apt-get`、...
本文主要介绍如何使用ltrace工具来跟踪PHP程序中的库函数调用,以及如何分析输出结果来诊断程序性能瓶颈。 首先,要使用ltrace来跟踪PHP脚本,可以通过在命令行中执行如下命令格式: ``` ltrace -c php script.php ...
ltrace 工具可以帮助开发者了解程序的库函数调用过程,从而 debug 和优化程序。 使用 ltrace 工具可以通过以下命令来实现: ltrace ./hello 其中,hello 是要调试的程序。ltrace 工具将跟踪 hello 程序的库函数...
ltrace适用于需要理解程序如何使用库函数的情况,而strace则更适合于排查与系统资源交互相关的问题。在实际使用中,开发者可以根据需要选择使用哪一个工具,或者结合两者来获取更全面的调试信息。 在复杂的情况下,...
例如,`ltrace -p 234` 将跟踪pid为234的进程的库函数调用。 这三个工具的工作原理基本相同,它们都利用ptrace系统调用来跟踪目标进程。ptrace允许一个进程(调试器)监视和控制另一个进程(被调试进程)的系统...
ltrace 是一个开源工具,它的主要功能是对Linux系统上的动态链接程序进行运行时调用跟踪。通过监控进程的系统调用和库函数调用,ltrace能够提供关于程序运行时行为的详细信息,这对于调试、性能分析和学习程序内部...
3. **Web开发**:使用Linux作为服务器操作系统进行Web开发,包括后端服务的搭建和维护,如使用LAMP(Linux, Apache, MySQL, PHP)或LEMP(Linux, Nginx, MySQL, PHP/Python/Perl)等技术栈。 4. **数据库开发**:在...
- **ltrace** 主要用于跟踪进程调用库函数的情况,最初出现在GNU/Debian Linux中,同样也在许多Unix系统中被广泛应用。 这三种工具虽然各有侧重,但它们都能够帮助开发者深入了解进程内部的行为,从而更准确地找出...
本文将详细介绍Linux系统中进行系统调用跟踪的方法,包括使用各种工具和技术。 Linux系统中有多种工具和技术可以用于跟踪系统调用,包括strace、ltrace、auditd、systemtap、perf和bpftrace。每种工具都有其特点和...
* ltrace:跟踪进程库函数调用 十四、系统信息命令 * sysinfo:显示系统信息 * uname:显示系统信息 * uptime:显示系统运行时间 * w:显示当前用户信息 Linux服务器常用命令涵盖了目录操作、光盘、归档、文件...
- **与 ltrace 对比**:ltrace 专注于库函数调用,而 DTrace 的范围更广,可以覆盖整个系统层面。 #### 知识点六:未来发展趋势 随着 MacOS 的不断发展和完善,DTrace 也在不断进步。未来版本可能会引入更多新特性...
而`ltrace`则追踪库函数调用,这对于理解程序如何使用共享库功能非常有帮助。这两个工具无需修改源码,可以直接对运行中的程序进行动态监控。 4. **Valgrind(内存检测工具)** Valgrind是一款强大的内存错误检测...
其次,strace是另一个强大的系统调用跟踪工具。它允许我们监视一个进程的系统调用,包括打开、关闭、读取、写入文件,以及网络通信、信号处理等操作。与ltrace不同,strace关注的是进程与内核之间的交互,而非应用与...
27. **跟踪程序的系统调用和库函数调用**:使用`strace`跟踪系统调用,使用`ltrace`跟踪库函数调用。 28. **异步I/O操作**:允许程序在等待I/O操作完成的同时继续执行其他任务。 29. **OOM Killer**:当系统内存不足...
ltrace_0.7.3.orig.tar.bz2
1. **strace**:这是一个系统调用跟踪器,用于查看进程与内核之间的交互。通过strace,我们可以看到进程执行的每个系统调用及其参数,这对于排查I/O问题、权限错误和系统资源使用情况很有帮助。 2. **ltrace**:与...
4. ltrace:ltrace用于跟踪程序的库函数调用,和strace有点类似,但它专注于跟踪动态链接库的函数调用,而不是系统调用。它可以帮助开发者了解程序中对动态链接库函数的使用情况,这对于调试复杂的应用程序特别有...
同时,使用`strace`和`ltrace`跟踪系统调用和库函数调用也有助于调试。 9. **安全与稳定性**:内核编程必须考虑安全性,防止意外的内存破坏、权限提升等攻击。了解内核安全模型,如地址空间布局随机化(ASLR)、非...