First up, I have to wonder: why not use the -w flag to grep to eliminate the “digit” matches?
More substantially, why not use truss or strace or some other tracing mechanism to trace calls to exec(2) and print the arguments?
I thought this was going to end in strace but I’m pleasantly surprised to learn their solution. It’s something I wouldn’t have thought of and it’s a nice and quick method.
Posted in the top level comment. Strace isn’t on Heroku by default.
I didn’t know about -w though I knew this was a ruby app and did grep for “`git” (with a backtick) which is the most likely way it was being called. It helped eliminate a good number of candidates but there were still a TON of places it was shelled out to. It ultimately didn’t help that much. I didn’t think it added much to the story so I left out that step.
It honestly didn’t occur to me to use strace and i’ve never heard of truss. Most of my debugging doesn’t need to drop to system level tools in the 5+ years i’ve been doing this for Heroku. I only get tickets that are escalated to a specialty “ruby” queue. In all it took me longer to write the post than to do the actual debugging.
Also, just checked. Our stack image doesn’t have strace installed and definitely not truss. So maybe that’s another reason why it wasn’t on my radar ;) There are ways to get packages but it’s not so straightforward.
We also have a debugging tag, which is probably a better fit here than programming. :)
For a second I thought you were talking about another way to find the solution. Was thinking “what is this debugging tag they are talking about? Is it a system level flag?” Ha. Thanks. It did involve me having to write a very brief program ;) I agree that’s a better tag.