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

Finding the first write to a variable in LLDB

本文关键字:第一次 变量 LLDB 查找      更新时间:2023-10-16

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

就像Flash Sheridan在对你的问题的评论中指出的那样,你想在这里使用一个观察点。 在应用的早期设置断点(例如 NSApplicationMain ),在您的(大概是全局的)布尔变量上设置一个观察点,

(lldb) watch set variable myvar

(lldb) w s v myvar

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