我有一个脚本,它使用命令文件运行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';
}
的选项。
答案 0 :(得分: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 0
和set width 0
会关闭gdb尝试显示包裹到终端宽度的输出,并一次显示页面。
我希望每次gdb打印任何东西时,这个包装和一次输出的页面会导致很多额外的处理。
pstack
脚本中的其他内容与您的脚本不同,所以我不知道它可能是什么。