【发布时间】:2019-07-09 20:58:34
【问题描述】:
我正在使用 gdb 调试一个多线程 C++ 程序。这是我想要实现的调试流程:
- 运行到断点,然后暂停所有线程的执行
- 使用
disable命令禁用[断点] - 调用一个函数(在我的程序中定义)来打印向量的状态(同时保持其他线程暂停)
但是,当我多次调用打印系统状态的函数时,数据结构的值会发生变化。除非我有其他错误,否则这一定意味着其他线程正在运行,而我的打印功能正在运行。
问题:
- 在执行
call命令时其他线程是否恢复执行 在gdb中? - 假设是这样,有没有办法禁用它,这样我就可以
当我通过
call反省程序状态时保持线程暂停 命令?
【问题讨论】:
-
@KostasRim 是的,这正是我所需要的;
set scheduler-locking on做我想做的事
标签: c++ multithreading gdb