0

我有一个脚本,它使用如下命令文件运行 gdb:

set logging file file_name
set logging on
thread apply all bt
q
y

为什么 pstack 比这个脚本快得多?我能以某种方式用 gdb 实现这种速度吗?

编辑:区别在于 gdb 版本。我使用了 gdb-7.10,转储堆栈跟踪大约需要 14 秒。使用 pstack 使用的 gdb 7.0.1,需要 2 秒。-readnever大部分时间都用 gdb-7.10 从我们的库中加载符号,我在新版本中找不到合适的选项。

4

1 回答 1

1

在我的系统上至少pstack有一个运行 gdb 的 shell 脚本,所以你可以通过查看可执行文件来准确地看到正在运行的内容pstack

我怀疑脚本中有趣的部分很可能是:

set width 0
set height 0
set pagination no

实际上set pagination no与 相同set height 0,因此您可以忘记该set pagination no部分。

set height 0set width 0关闭 gdb 显示包装到终端宽度的输出的任何尝试,并一次显示页面。

我希望每次 gdb 打印任何内容时,这种包装和一次输出的页面都会导致大量额外的处理。

脚本中没有什么pstack与你的脚本不同的地方,所以我看不出还有什么不同。

于 2016-02-20T18:05:53.937 回答