当前位置: 首页 > 面试题库 >

打印PHP调用堆栈

贡建修
2023-03-14
问题内容

我正在寻找一种在PHP中打印调用堆栈的方法。

如果函数刷新IO缓冲区,则奖励积分。


问题答案:

如果要生成回溯,则正在寻找 debug_backtrace 和/或
debug_print_backtrace

例如,第一个将为您提供一个像这样的数组 (引用手册)

array(2) {
[0]=>
array(4) {
    ["file"] => string(10) "/tmp/a.php"
    ["line"] => int(10)
    ["function"] => string(6) "a_test"
    ["args"]=>
    array(1) {
      [0] => &string(6) "friend"
    }
}
[1]=>
array(4) {
    ["file"] => string(10) "/tmp/b.php"
    ["line"] => int(2)
    ["args"] =>
    array(1) {
      [0] => string(10) "/tmp/a.php"
    }
    ["function"] => string(12) "include_once"
  }
}

它们显然不会刷新I / O缓冲区,但是您可以使用 flush 和/或自己进行操作
ob_flush

(请参阅第一个手册页,以了解为什么使用“和/或” ;-))



 类似资料:
  • #include<stdio.h> void a(void) { printf("Tail call frame\n"); } void b(void) { a(); } void c(void) { b(); } int main(void) { c(); return 0; } 技巧 当一个函数最后一条指令

  • 问题内容: 每当调用某个函数时,是否有任何方法可以在C或C ++的运行进程中转储调用堆栈?我想到的是这样的: Where的工作方式与Perl 类似。 或类似这样的东西: 在其中放置某种内部断点,该断点将在每次调用时打印堆栈跟踪。 标准的C库中是否存在类似的东西? 我正在使用GCC在Linux上工作。 背景 我有一个测试运行,该行为基于一些不应影响此行为的命令行开关而有所不同。我的代码有一个伪随机数

  • 问题内容: 我需要编写一个小的日志分析器应用程序来处理由我的项目中使用的第三方封闭源库(内部具有自定义记录器)生成的一些日志文件。 如果日志中有异常条目,我需要从堆栈顶部到异常的实际位置收集有关堆栈跟踪中所涉及方法的汇总信息。 不幸的是,默认情况下,Java printStackTrace()不会打印调用堆栈中的每个方法,但是最多可以打印一个特定的数目,其余的仅被引用为。 如果我自己可以捕获到该异

  • 我使用以下代码打印try-catch块中发生的任何异常,但是当异常发生时,logback不会打印完整的堆栈跟踪,而是写入一行错误(它没有明确说明是什么导致了它。我如何在logback输出中打印完整的堆栈跟踪? 尝试捕获异常的catch块 日志返回错误输出:

  • java中是否有一种方法可以在不修改代码的情况下打印catch块中任何异常的堆栈跟踪。我被告知有一个JVM arg可以用来生成所有异常的堆栈跟踪以供调试,尽管我在这上面找不到任何留档。我能想到的唯一解决方案是使用aspectj并在创建的任何异常上创建一个方面并打印堆栈跟踪。我希望有比方面更好的解决方案。 谢了Steve --编辑——我想知道的是,假设我有以下代码:试试{throw new Exce

  • 我们希望打印到连接在apache运行的POS打印机上。由于应用程序的设计和部署,打印应该从服务器上完成(它应该检测订单并发送到不同的打印机和不同格式的打印...账单,厨房订单,等等...)。出于这个原因和其他原因(例如,从iPad访问应用程序),我们放弃了像QZ-Print applet这样的选项,并需要直接在服务器端打印。 提前谢了。