< 返回版块

Uchiha007 发表于 2021-12-29 18:22

一个程序运行一段时间卡住,通过什么工具能检测到代码卡在什么位置,或者卡住那些函数上了?

评论区

写评论
作者 Uchiha007 2021-12-30 14:23

卡住后,gdb attach 与 pstack 看到的内容基本是一样的。

--
👇
Grainspring: 可以尝试$gdb attach 进程pid, 然后通过(gdb)thread apply all bt 查看各个线程的callstack.

作者 Uchiha007 2021-12-30 14:22

嗯,日志做的确实也不够完善。

--
👇
NaokiLH: 尝试在不同函数里打log?

作者 Uchiha007 2021-12-30 14:20

是的,可以看到线程在 epoll_wait,backtrace 也是库代码,没有当前应用的代码线索。

--
👇
我心飞翔: pstack 可以看到每个线程在做什么

我心飞翔 2021-12-30 11:01

pstack 可以看到每个线程在做什么

dreamerlzl 2021-12-29 21:36

pstack 看callstack? strace 看system call?

Grainspring 2021-12-29 20:58

可以尝试$gdb attach 进程pid, 然后通过(gdb)thread apply all bt 查看各个线程的callstack.

NaokiLH 2021-12-29 19:56

尝试在不同函数里打log?

1 共 7 条评论, 1 页