为什么pstack比gdb快得多,只需附加,保存堆栈并退出?

时间:2016-02-20 11:25:41

标签: linux shell gdb stack-trace pstack

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

-readnever

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

编辑:差异是gdb版本。我使用gdb-7.10,转储堆栈跟踪大约需要14秒。使用gdb 7.0.1,使用了pstack,耗时2秒。从lib开始加载符号时,大部分时间用于gdb-7.10,我在新版本中找不到适合for(int tresasure = 0; treasure < amountTreasure; treasure++) { int x, y; do { x = random.nextInt(matrix.length); y = random.nextInt(matrix[x].length); } while(matrix[x][y] == 'X'); matrix[x][y] = 'X'; } 的选项。

1 个答案:

答案 0 :(得分:1)

在我的系统上,至少pstack是一个运行gdb的shell脚本,因此您只需查看pstack可执行文件就可以确切地看到正在运行的内容。

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

set width 0
set height 0
set pagination no

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

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

我希望每次gdb打印任何东西时,这个包装和一次输出的页面会导致很多额外的处理。

pstack脚本中的其他内容与您的脚本不同,所以我不知道它可能是什么。