gdb调试SAPI方式的php

一.修改php-fpm.conf文件

/usr/local/php/etc/php-fpm.conf

pm.max_children = 1 #只产生一个进程,便于追踪

二.得到进行服务的进程号

[[email protected] etc]# ps aux|grep php-fpm
root 15212 0.0 0.2 190148 3316 ? Ss 17:39 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nobody 15224 0.0 0.3 190672 4228 ? S 17:40 0:00 php-fpm: pool www
root 15322 0.0 0.0 103252 804 pts/0 S+ 17:58 0:00 grep php-fpm

15212  master process 是监控进程,不用管它

15224  work process 工作进程,使用它

#gdb -p 15224

(gdb) b /home/php-5.3.25/ext/standard/url.c:566 //主要调用php内核对query_string参数进行decode处理
Breakpoint 1 at 0x722ec4: file /home/php-5.3.25/ext/standard/url.c, line 566.
(gdb) c
Continuing.

这时再开一个终端,

执行 curl ‘http://10.10.9.154:9002/test.php?age=12345‘

之前的终端,使用s命令,进入函数,进行调试

(gdb) b /home/php-5.3.25/ext/standard/url.c:566
Breakpoint 1 at 0x722ec4: file /home/php-5.3.25/ext/standard/url.c, line 566.
(gdb) c
Continuing.

Breakpoint 1, php_url_decode (str=0x2e3be18 "age", len=3) at /home/php-5.3.25/ext/standard/url.c:568
568 char *dest = str;
(gdb) s
569 char *data = str;

时间: 2024-10-29 13:35:45

gdb调试SAPI方式的php的相关文章

gdb调试命令

本篇摘自互联网,纯属自己学习笔记,然分享给看到我的博客的人们. 用GDB调试程序 GDB是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本.UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能. 于是UNIX下的软件比Windows下的软件更能有机地结合,各自发挥各自的长处,组合成更为强劲的功能.而Windows下的图形软件基本上是各自为营,

gdb调试正在运行的进程

[转自] http://hi.baidu.com/brady_home/blog/item/6b92aa8ffdfee2e6f01f369b.html gdb调试正在运行的进程 2009年04月18日 星期六 下午 08:21 有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形).这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行.另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式.GDB可以对正在执行的程

GDB 调试解析

GDB(GNU Debugger)是一个强大的命令行调试工具.大家知道命令行的强大就是在于,其可以形成执行序 列,形成脚本.UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,命令行软件的优势在于,它们可以非常容易的集成在一起,使用几个简单的已有工具的命令,就可以做出一个非常强大的功能. GDB主要帮忙你完成下面四个方面的功能: (1).启动你的程序,可以按照你的自定义的要求随心所欲的运行程序. (2).可让被调试的程序在你所指定的调置的断点处停住.(断点可以是条件表达式) (3).当

Hi35xx NVR GDB调试

Hi35xx NVR GDB调试   1. 下载gdb源码 嵌入式Linux 的GDB 调试环境由Host 和Target 两部分组成,Host 端使用arm-linuxgdb,Target Board 端使用gdbserver.这样,应用程序在嵌入式目标系统上运行,而gdb 调试在Host 端,所以要采用远程调试(remote)的方法.进行GDB 调试,目标系统必须包括gdbserver 程序(在主机上正对硬件平台编译成功后下载到目标机上),宿主机也必须安装GDB 程序.一般Linux 发行版

linux平台学x86汇编(五):使用gdb调试汇编程序

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] 正如C语言一样,编写所有语言程序一样会出现一些一些错误,发生错误时,我们可以使用调试器一步一步运行程序以监视数据是如何被处理的.本节使用GNU调试器检查上一节hello程序,监视处理过程中寄存器和内存的值的变化.要调试汇编语言程序,在编译时,需要使用-gstabs参数重新汇编源代码,使用了该参数编译出来的可执行文件要比之前稍大一些,因为添加了附加信息.上一节程序不使用-gst

用gdb调试游戏服务端

前言 说说gdb的重要性 一般来说,提到gdb,都是用命令来调试."命令",这个对于用户来说几乎等同于繁杂的词语.尽管事实确实如此,但实际的开发调试必须用到gdb.现在,大多数Linux系统是存在于服务器当中.我们想操作这些系统时,一般是通过Terminal来操作.也就是说这些Linux系统不具有图形界面.而调试一般分两部分,开发时调试和运行时调试.当我们的程序部署到Linux上时,那就需要忘记那该死图形调试器了. 说说写这篇文章的目的 昨天公司游戏的其中服务端崩溃了.我在调试时忘记了

GDB调试手册[转]

Linux 包含了一个叫gdb 的GNU 调试程序.gdb 是一个用来调试C和C++程序的强力调试器.它使你能在程序运行时观察程序的内部结构和内存的使用情况.以下是 gdb 所提供的一些功能:它使你能监视你程序中变量的值.它使你能设置断点以使程序在指定的代码行上停止执行.它使你能一行行的执行你的代码.在命令行上键入gdb并按回车键就可以运行gdb 了.(Windows需要安装MinGW或者CygWin并且需要配置环境变量才可以使用) GDB 命令行参数 启动 GDB: l  gdb execut

GDB调试总结__1

该博客旨在分享IT技术心得和实际工作中遇到问题的解决方法,下面是新浪博客地址http://blog.sina.com.cn/qianyumolu,则为分享经济.行业趋势.心灵文章等,有兴趣的朋友能够踩踩,讨论分享    也欢迎来群里一起学习交流http://url.cn/LJhxoQ -----------------------------------------------------------------------------------------------------------

Linux内核调试的方式以及工具集锦

CSDN GitHub Linux内核调试的方式以及工具集锦 LDD-LinuxDeviceDrivers/study/debug 本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作 因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 也欢迎大家提供一些其他好的调试工具以供收录, 鄙人在此谢谢啦 "调试难度本来就是写代码的两倍. 因此, 如果你写代码的时候聪明用尽, 根据定义, 你就没有能耐去调试它了.&qu