Gdb 在创建和销毁线程时显示线程事件
例如:创建线程时会显示如下所示的消息。
[New Thread 0x41e02940 (LWP 25582)]
与线程被销毁时显示消息的方式相同。
不使用gdb时,我们有没有办法跟踪进程中发生的线程事件?
在不使用 gdb 的情况下,我们有没有办法跟踪进程中发生的线程事件?
GDB 不使用任何秘密 API,因此您可以编写一个(非平凡的)程序来跟踪线程创建和销毁事件,就像 GDB 一样,使用相同的 API。
但是您的问题可能是:"是否可以从进程本身内部跟踪/记录线程创建和销毁事件?
您可以插入pthread_create
和pthread_exit
函数,并注入一个"包装器"函数,该函数将调用用户提供的实际线程函数。包装函数可以在调用时(新线程刚刚出现)和实际用户提供的线程函数返回后(线程即将退出)打印消息。把细节做好并不完全是微不足道的,但也不是很难。这是一个很好的起点。