gdb调试php
① 如何 gdb 调试php-fpm
1,安装strace
[html] view plain
sudo apt-get install strace
2,查看php-fpm进程
[html] view plain
vagrant@vagrant-ubuntu-precise-64:~$ ps -ef | grep php-fpm
root 2105 1 0 04:02 ? 00:00:02 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)
www-data 2105 0 04:02 ? 00:00:02 php-fpm: pool www
www-data 18481 2105 0 07:05 ? 00:00:01 php-fpm: pool www
www-data 18513 2105 0 07:06 ? 00:00:03 php-fpm: pool www
vagrant 19312 6379 0 10:14 pts/4 00:00:00 grep --color=auto php-fpm
3,调试进程输出日志到文件
[html] view plain
vagrant@vagrant-ubuntu-precise-64:~$ sudo strace -f -p 2105 -e trace=file -o /temp/trace.log
Process 2105 attached - interrupt to quit
Process 19349 attached
Process 19350 attached
4,查看日志文件
[html] view plain
tail -f /temp/trace.log
② GDB 调试命令
(gdb) i r
(gdb) i r a # 查看所有寄存器(包括浮点、多媒体)
(gdb) i r esp
(gdb) i r pc
(gdb) x /wx 0x80040000 # 以16进制显示指定地址处的数据
(gdb) x /8x esp+12
(gdb) x /16s 0x86468700 # 以字符串形式显示指定地址处的数据
(gdb) x /24i 0x8048a51 # 以指令形式显示指定地址处的数据(24条)
(gdb) set $v0 = 0x004000000
(gdb) set $epc = 0xbfc00000
(gdb) set {unsigned int}0x8048a51=0x0
(gdb) set (unsigned int )0x8048a54=0x55aa55aa
Usage: find <start> <end> <count> <value>
(gdb) b *0x80400000
(gdb) watch *(unsigned int *)0xbffff400==0x90909090
更多
https://www.cnblogs.com/wuyuegb2312/archive/2013/03/29/2987025.html
③ gdb调试命令是什么
gdb调试命令如下:
1、启动gdb
$gdb
这样可以和gdb进行交互了。
2、启动gdb,并且分屏显示源代码
$gdb -tui
这样,使用了'-tui'选项,启动可以直接将屏幕分成两个部分,上面显示源代码,比用list方便多了。这时候使用上下方向键可以查看源代码,想要命令行使用上下键就用[Ctrl]n和[Ctrl]p。
3、启动gdb调试指定程序app
$gdb app
这样就在启动gdb之后直接载入了app可执行程序,需要注意的是,载入的app程序必须在编译的时候有gdb调试选项,例如'gcc -g app app.c',注意,如果修改了程序的源代码,但是没有编译,那么在gdb中显示的会是改动后的源代码,但是运行的是改动前的程序,这样会导致跟踪错乱的。
4、启动程序之后,再用gdb调试
$gdb <program> <PID>
这里,<program>是程序的可执行文件名,<PID>是要调试程序的PID.如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。
5、启动程序之后,再启动gdb调试
$gdb <PID>
这里,程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID,<PID>是要调试程序的PID.这样gdb就附加到程序上了,但是现在还没法查看源代码,用file命令指明可执行文件就可以显示源代码了。
④ php高级工程师有什么任职要求
php高级工程师任职要求有什么呢?一起来了解一下吧。
1、熟悉unix环境编程,如多线程/多进程,新号、信号量、共享内存、消息队列、文件系统等。
2、熟悉php的stream、sockets、posix、pcntl、libevent、inotify扩展;掌握zend引擎的执行原理,了解php内核中的zval、hashtable的实现、了解php扩展的开发。
3、掌握c/c++语言编程,可以写出c/c++的程序。
4、掌握gdb调试c/c++、php程序。
5、了解linux集群、负载均衡、容灾、数据同步。
6、了解hadoop、hive,storm等大数据分析系统。
7、三年以上php工程师工作经验。
今天的分享就是这些啦,希望能给大家帮助哟!
⑤ gdb调试问题
提示什么, 如果是同一个文件,一个能调试,另一个不能调试,最大的原因是权限问题, 这个你用GDB载入的时候,按R 运行后,一般会有提示的。 另外也可能文件损坏了。。你最好再 编译一下,如果是直接 attach进行的调试,则极有可能是权限问题。
⑥ gdb 调试,求指教
1、ARM硬件内核嵌入能够响应J-Link命令调试模块(用户修改需要额外烧录程序);
2、调试程由ARM内嵌调试模块执行响应Linuxgdb调试软件(工具)所些称gdbserver;
3、linux软件都服务器+用户模式(明白直接忽略表述)Linuxgdb自软件架构虚拟服务器(图GDB Server)其与博客gdbserver东东;
4、我认同些博客种说能说错宏观角度讲ARM硬件内核嵌入调试模块gdb服务称gdbserver些道理给造必要误解
******希望我解释帮助
⑦ 如何使用GDB调试PHP程序
使用GDB调试PHP程序:
这个比较长没办法给你弄过来
jb51.net/article/76028.htm
⑧ 如何调试PHP的Core之获取基本信息
首先, 让生成一个供举例子的Core文件: <?phpfunction recurse($num) { recurse(++$num);} recurse(0); 运行这个PHP文件: $ php test.phpSegmentation fault (core mped) 这个PHP因为无线递归, 会导致爆栈, 从而造成 segment fault而在PHP的当前工作目录产生Coremp文件(如果你的系统没有产生Coremp文件, 那请查询ulimit的相关设置). 好, 现在, 让删除掉这个test.php, 忘掉上面的代码, 我们现在仅有的是这个Core文件, 任务是, 找出这个Core产生的原因, 以及发生时候的状态. 首先, 让用gdb打开这个core文件: $ gdb php -c core.31656 会看到很多的信息, 首先让我们注意这段: Core was generated by `php test.php'.Program terminated with signal 11, Segmentation fault.