pstack for OS X
07 Apr 2015Unfortunately OS X does not have a wonderful Linux-world utility pstack
that helps to inspect a running process with a shell one-liner:
So I wrote a replacement based on system gdb. Please use it if you find it useful.
I discovered a few interesting things while writing this utility.
Homebrew gdb
sometimes leaves a process in a sleep state after attaching and detaching. Okay, let’s use system gdb
. But it is very old (version 6), non-standard and compiled without python support so we cannot use nice python scripting (initially I found a python script to run inside gdb). Okay, there is a nice native `gdb command
that does everything we need. The next problem with gdb
was a lack of --ex
command-line argument that allows to specify a gdb script inline. So we need to create a temporary file with a gdb script. And finally OS X lacks /proc
filesystem so to determine a process binary it’s needed to consult with ps
command.
The moral of this story. OS X and Linux are POSIX-compatible but differences environments, different flavors of developer tools and well-known bugs became nightmare to port even so simple utilities.