我知道这个问题的答案,我把它放在这里让其他人看到它
如果您使用 eclipse CDT,您可能会明白 eclipse 不是调试器,它只是一个应用程序前端,特别是针对 GDB。因此,在调试 C++ 程序时,您实际上只是在以一种更舒适的方式使用 GDB。如果您必须在 eclipse CDT 中调试多线程程序,您会意识到事情很快就会变得忙碌,因为当您遇到断点时,所有线程都会停止,并且当您尝试在特定线程中执行单行时,它也会运行其他线程。为了让它正常工作,线程必须能够任意和排他地运行——这样当程序员执行一行时,它只执行特定的线程。
因此,默认情况下,gdb 的设置默认关闭“调度程序锁定”。如果您调试多线程应用程序,您会明白这必须在 GDB 中启用才能实现所需的行为。如何运行此命令:
set scheduler-locking on
在 Eclipse CDT 中的 GDB 中?