是否可以使用 gdb 从核心转储中获取每个线程的“comm”?

是否可以使用 gdb 从核心转储中获取每个线程的“comm”?

我写了一个使用多线程的C程序。为了方便起见,我将每个线程的线程设置comm为某个单独的值,甚至可能会根据线程的状态而改变(有点像经典的sendmail做法)。

现在,当我的进程在终止期间转储核心时,我看到(例如)进程失败时有两个线程处于活动状态(其中一个线程出现故障pthread_join)。不幸的是,找出哪个线程是哪个线程并不容易,并且 gcc 优化的代码通常具有“折叠的堆栈帧”,因此调用层次结构在 gcc 的回溯中并不真正可见。

此外,这个问题很难重现,所以我想从核心转储中获得最多的信息。

具体来说:我可以comm使用 gcc 显示线程的字段吗?

相关内容