在ARM平台下使用gstack抓取栈时,可能会由于LLVM重复打印同一个栈帧,导致其他线程的栈无法正常打印。此时可以通过修改gstack脚本,限制打印的栈深度来避免该问题。
gstack脚本的修改方法如下:
a. 在shell中执行sudo vim which gstack
命令。
b. 修改脚本中所有的backtrace变量,加上栈深度限制,例如限制打印的栈深度为100,则第一个backtrace修改为backtrace=“bt 100”,其他backtrace变量的修改方法类似。
gdb打印全部堆栈的时候如果遇到该问题,也可以通过增栈深度的限制来避免。
说明:
在资源许可的情况下,数据量越大,可获得的性能提升效果越好。