c++ - 在 LLDB 中查找对变量的第一次写入

标签 c++ clang breakpoints lldb watchpoint

我正在使用 LLDB 调试一个大型程序,并且有一个 bool 变量随处使用,通常被称为 extern。我已经调试了一段时间,无论我在哪里设置断点,该值始终为 true。我想找到设置此值的位置 - 我尝试搜索代码并在该变量的每个赋值处设置断点,但似乎没有一个被触发,并且在稍后的断点处该值始终为 true 。有什么方法可以查明对变量的第一次写入吗?

最佳答案

正如 Flash Sheridan 在他对您的问题的评论中指出的那样,您想在此处使用观察点。在您的应用程序早期设置一个断点(例如 NSApplicationMain),在您的(可能是全局的)bool 变量上设置一个观察点,

(lldb) watch set variable myvar

(lldb) w s v myvar

每次修改 myvar 时,这应该会停止程序执行。

关于c++ - 在 LLDB 中查找对变量的第一次写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13817636/

相关文章:

c++ - linux:如何断开远程用户访问?

macos - 尝试在 Mac 上安装 openMP/Clang

java - Eclipse 中划掉断点的含义

visual-studio - 在 Visual Studio 中作为原子操作插入条件断点(这样在设置条件之前它不能触发)

c++ - 如何针对调用 exit() 的函数编写测试?

c++ - 在 C++ 中使用构建器模式时,setter 返回对构建器对象的引用是否可取?

c++ - 如何在 C++ 中根据不同的值使用不同的命名空间?

c++ - Clang scan-build 将 CXX 编译器识别为 GNU 9.1.0,而不是 clang

c++ - 允许这种浮点优化吗?

delphi - 不断断点?如何去除它们?