gpt4 book ai didi

c++ - gdb:在多线程程序中调用函数而不进行线程

转载 作者:行者123 更新时间:2023-11-30 04:46:07 26 4
gpt4 key购买 nike

我正在使用 gdb 调试多线程 C++ 程序。这是我想要实现的调试流程:

  1. 运行到断点,然后暂停所有线程的执行
  2. 使用disable 命令禁用[断点]
  3. 调用一个函数(在我的程序中定义)来打印 vector 的状态(同时保持其他线程暂停)

但是,当我多次调用打印系统状态的函数时,数据结构的值发生了变化。除非我有某种其他错误,否则这一定意味着在我的打印功能运行时其他线程也在运行。

问题:

  1. 执行 call 命令时,其他线程是否继续执行在 gdb 中?
  2. 假设是这样,有没有办法禁用它,这样我就可以在我通过 call 反省程序状态时保持线程暂停命令?

最佳答案

请参阅@KostasRim 的评论 -- set scheduler-locking on 实现了所需的行为 (https://sourceware.org/gdb/onlinedocs/gdb/All_002dStop-Mode.html)。默认情况下,其他线程在步进、函数调用等过程中运行。

关于c++ - gdb:在多线程程序中调用函数而不进行线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56960422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com