我使用gdb附加到我的多线程应用程序,然后键入cont
以继续执行。
cont
gdb状态下随时停止执行并检查每个线程的作用?答案 0 :(得分:2)
这就是我的所作所为(取自here)
创建一个转储所有线程的堆栈跟踪的小gdb脚本stackdumper.gdb
:
thread apply all backtrace
然后重复附加gdb并运行转储程序:
for i in $(seq 1 10) ; do
gdb -batch -x stackdumper.gdb ./a.out 123456 > stack.$i
sleep 10
done
其中./a.out
是您感兴趣的二进制文件,123456是PID。
调整睡眠以符合您的采样需求。
答案 1 :(得分:2)
thread apply all bt
或者
info threads
t <threadid from above trace >
其次是
where
或bt
答案 2 :(得分:1)
要获取所有已停止线程的回溯,请键入
thread apply all bt
命令(输出与MacOSX崩溃报告框中的输出完全相同)。
通常在gdb中同时停止线程。
参考:http://www.delorie.com/gnu/docs/gdb/gdb_40.html
这里是“全停”模式,默认为:http://sourceware.org/gdb/onlinedocs/gdb/All_002dStop-Mode.html
答案 3 :(得分:0)
这是否可以随时在cont gdb状态下停止执行并检查每个线程执行的操作
如果您询问如何在没有gdb
的情况下检查线索的运行情况,您可以运行pstask <pid-of-your application>
答案 4 :(得分:0)
是“pstack”因为我不认为“pstask”是linux中的任何命令,如果是请提供更多信息