0
我在Linux有5个线程的应用程序。调试多线程应用程序
Thread1..Thread5
我有一个关键部分是缓冲区保存一些数据。
我有申请互斥锁定和解锁功能这一关键部分
lock()
bufferdata
unlock
所有线程都在同步的方式访问数据。
现在例如
thread 3
获得锁和处理所述缓冲的数据。在处理缓冲区时,它已经覆盖了导致缓冲区溢出的一些数据。
破坏数据后,线程3解锁临界区。
现在,当thread 5
获得锁定并尝试对损坏的内存执行一些操作时,整个过程都被核心转储。
通常,如果我们将内核附加到GDB并执行回溯,它将向您显示进程中所有线程的调用堆栈。
在linux系统中是否有找到罪魁祸首的线程(这里是thread 3
)。如果是这样,请不要让我知道过程中找到罪魁祸首线程提前