Uchiha007 发表于 2021-12-29 18:22
一个程序运行一段时间卡住,通过什么工具能检测到代码卡在什么位置,或者卡住那些函数上了?
卡住后,gdb attach 与 pstack 看到的内容基本是一样的。
-- 👇 Grainspring: 可以尝试$gdb attach 进程pid, 然后通过(gdb)thread apply all bt 查看各个线程的callstack.
嗯,日志做的确实也不够完善。
-- 👇 NaokiLH: 尝试在不同函数里打log?
是的,可以看到线程在 epoll_wait,backtrace 也是库代码,没有当前应用的代码线索。
epoll_wait
-- 👇 我心飞翔: pstack 可以看到每个线程在做什么
pstack 可以看到每个线程在做什么
pstack 看callstack? strace 看system call?
可以尝试$gdb attach 进程pid, 然后通过(gdb)thread apply all bt 查看各个线程的callstack.
尝试在不同函数里打log?
评论区
写评论卡住后,gdb attach 与 pstack 看到的内容基本是一样的。
--
👇
Grainspring: 可以尝试$gdb attach 进程pid, 然后通过(gdb)thread apply all bt 查看各个线程的callstack.
嗯,日志做的确实也不够完善。
--
👇
NaokiLH: 尝试在不同函数里打log?
是的,可以看到线程在
epoll_wait
,backtrace 也是库代码,没有当前应用的代码线索。--
👇
我心飞翔: pstack 可以看到每个线程在做什么
pstack 可以看到每个线程在做什么
pstack 看callstack? strace 看system call?
可以尝试$gdb attach 进程pid, 然后通过(gdb)thread apply all bt 查看各个线程的callstack.
尝试在不同函数里打log?