Shaikhul Islam
Posted on January 29, 2019
In my previous post I briefly mentioned debugging a php process with gdb. In this post I am going to describe the steps and required tools to successfully get insights/stacktrace from a running PHP process.
First thing first, make sure you have install php5-dbg package. In this example I am using an Ubuntu box.
$ dpkg-query -l | grep php5-dbg
If not found install it first
$ sudo apt-get install php5-dbg
We also need a .gdbinit
file. Get it from here according to php version.
Now it's time to start gdb with the php process.
$ sudo gdb -p PID
At the point gdb will pause the program, you need to type continue
inside the gdb shell.
> cont
Wait for a while and then press Ctrl+C to get back to gdb shell.
Now source the .gdbinit
, I put it into my home directory.
> source ~/.gdbinit
Type zbacktrace
to see actual backtrace from the underlying php program.
> zbacktrace
After getting the stacktrace detach the program from gdb and then quit, if you dont detach the program, gdb will kill it when you quit gdb.
> detach
> q
You can check other commands available in the .gdbinit
file.
This helped me today to get actual stacktrace of the php program instead of php interpreter calls that I got with bt
command.
gdb
is really an awesome sauce!
Posted on January 29, 2019
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.