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