在 PHP 中,您可以从\Exception::getTrace()
或从获取堆栈跟踪数组debug_backtrace()
。
同一进程/请求中的两个堆栈跟踪通常有一些共同的调用,然后是一些独立的调用。或者有时一个堆栈跟踪可能完全包含在另一个更深的堆栈跟踪中。
例如,如果你捕获一个异常,然后在你调用的 catch 块中debug_backtrace()
,那么这通常是异常回溯的子跟踪。
出于调试目的,仅查看与包含 try/catch 的函数相关的跟踪部分可能会很有趣。
获取此部分或相对堆栈跟踪的优雅方法是什么?
我确实知道我自己会如何做,并且可能会将其发布为答案。但我很好奇是否有更好的方法。
我预料到的一个特别困难是:任何一条轨迹上的两个项目看起来都一样,即使它们实际上不同。我假设从同一个循环发出的两个调用是无法区分的。我想知道是否有任何技巧可以使它们区分。