gdb调试技巧 找到php执行进程当前执行的代码

假设线上有一段php脚本,突然在某天出问题了,不处理但是进程没有退出。这种情况可能是异常休眠或者是有段死循环代码,但是我们怎么定位呢,我们这个时候最想知道的应该是这个脚本在此刻在做什么吧。这个是gdb+zbacktrace就有用了

首先随便写一个测试脚本test.php,里面就写一个sleep函数,换成死循环也可以。

<?php
function Mecho($i){
 echo $i.PHP_EOL;
}
$i = 20;
while($i>0){

if($i%2==0){
  Mecho($i);
}
sleep(100000);
$i--;
}

zbacktrace下载php源码包里面就有,当前我的环境是新装的,当前的php版本是php7.2.9

直接cli执行test.php

php test.php

然后找到当前php进程

  

然后用gdb调试

gdb -p 56571

调试

source /usr/local/src/php-7.2.9/.gdbinit
zbacktrace

这个时候就知道了是在test.php的11行 sleep函数导致的进程sleep。

  

原文地址:https://www.cnblogs.com/gavinjunftd/p/9516609.html

时间: 2024-10-01 09:46:38

gdb调试技巧 找到php执行进程当前执行的代码的相关文章

使用 gdb 调试运行中的 Python 进程

本文和大家分享的是使用 gdb 调试运行中的 Python 进程相关内容,一起来看看吧,希望对大家学习python有所帮助. 准备工作 安装 gdb 和 python2.7-dbg: $ sudo apt-get install gdb python2.7-dbg 设置 /proc/sys/kernel/yama/ptrace_scope: $ sudo su# echo 0 > /proc/sys/kernel/yama/ptrace_scope 运行 test.py: $ python te

pwn 题GDB调试技巧和exp模板

GDB分析ELF文件常用的调试技巧 gdb常用命令 首先是gbd+文件名 静态调试 ,gdb attach +文件名 动态调试 为了方便查看堆栈和寄存器 最好是安装peda插件 安装 可以通过pip直接安装,也可以从github上下载安装 $ pip install peda $ git clone https://github.com/longld/peda.git ~/peda $ echo "source ~/peda/peda.py" >> ~/.gdbinit 命

GDB调试技巧:常用命令

一 写在开头 1.1 本文内容 总结GDB调试的一些常用命令.不定期更新. 二 常用命令 GDB和VIM一样,功能异常强大,但要熟练掌握它却很需要费时间.不过,尽管它们两个的命令多如牛毛,但只要掌握最常用的那几个命令就可以快速上手.下面的列表总结了GDB最常用的几个命令. 简写 全称 备注 l list 显示指定行号或者指定函数附近的源代码 b break 在指定行号或者指定函数开头处设置断点.如b main r run 运行程序,直到程序结束或者遇到断点而停下 c continue 在程序中断

gdb调试技巧

使用命令: display 变量名跟踪查看某个变量,每次停下来都显示它的值 undisplay 跟踪显示号取消跟踪显示 info(或i) breakpoints查看当前设置了哪些断点 例如: disable breakpoints 3 (gdb) enable 3 (gdb) i breakpoints (gdb) delete breakpoints gdb) break 9 if sum != 0 (gdb) info registers (gdb) disassemble main 本文的

IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS

转载:http://article.ityran.com/archives/1143 有这样一种情形:当我们正在快乐的致力于我们的app时,并且什么看都是无比顺利,但是突然,坑爹啊,它崩溃了.(悲伤地音乐响起) 我们需要做的第一件事就是:不要惊慌. 修复崩溃不是很困难的.假如你崩溃了,并且胡乱的改些东西,而且还在不停的念着咒语希望bug神奇的自动消失,你大多数情况下都会使情况更麻烦.相反的,你需要知道一些系统的方法,并且学习怎么找到崩溃和他的原因. 第一件需要知道的就是在你的代码中准确的找到cr

反调试技巧总结-原理和实现

标 题: [原创]反调试技巧总结-原理和实现(1)(2)(3)(4)(5)(6)......作 者: shellwolf时 间: 2008-08-10,22:40链 接: http://bbs.pediy.com/showthread.php?t=70470 反调试技巧总结-原理和实现-------------------------------------------------------------------------------------------------------2008

Linux基础 30分钟GDB调试快速突破

引言 Linus心灵鸡汤 在*nix开发中有道卡叫gdb调试,不管你怎么搞. 它依然在那丝毫不会松动.今天致敬一个 活着的传奇 Linus Torvalds Unix 始于上个世纪60年代,在70年代得到了迅猛的发展, 这时候的李纳斯还躺在祖父公寓的摇篮里睡大觉,如果不是后来 Unix 王国自乱阵脚, 出现阵营分裂和法律纠纷,可能 Linux 系统根本都不会出现.真实的情况是, Unix 浪费了大把的时间和机会,似乎就是为了等待这个大鼻子.头发纷乱的芬兰小子长大,然后一决高下. 李纳斯赢得了自己

反调试技巧

一. 前言 部分代码和参考资料来源:1.<<脱壳的艺术>> hawking2.<<windows anti-debugger reference>> Angeljyt3.http://bbs.pediy.com 4.<<软件加密技术内幕>> 看雪学院5.<<ANTI-UNPACKER TRICKS>> Peter Ferrie 二.反调试函数前缀              检测        攻击通用调试器  

《软件调试的艺术》学习笔记——GDB使用技巧摘要

<软件调试的艺术>学习笔记——GDB使用技巧摘要 <软件调试的艺术>,因为名是The Art of Debugging with GDB, DDD, and Eclipse. 作者是美国的Norman Matloff和Peter Jay Salzman,中文版由张云翻译.是人邮出版社图灵程序设计丛书初版.这里称为"艺术",个人觉得有点过了,但是其中关于gdb以及在gdb基础之上集成的DDD和Eclipse调试技巧的整理确实是做的很好,对于Linux/开源社区下的