LLDB C++ debugging

LLDB C++ debugging

本文关键字:debugging C++ LLDB      更新时间:2023-10-16

我是LLDB的新手,我正在代码中使用各种std::vector,但是当我尝试打印向量的值或使用诸如expr '(int)myVector[0]'expr '(int)myVector.size()'之类的东西查询向量的大小时,调试器会打印与我知道的向量中的值无关的值。

当我学习使用命令行和LLDB进行调试时,我确定我在这里遗漏了一些东西,任何人都可以发现我的错误或给出一些建议吗?

编辑 忘了说我在安装了最新命令行工具的OS X Mavericks下。

我自己找到了答案。显然,像[]这样的重载运算符是不允许的,因为它们是内联的,请参阅此问题以获取更好的解释。

此外,我不知道为什么我为我想评估的语句加上单引号(我很确定我在其他地方看到了它......它们在LLDB中的实际含义是什么?像这样expr 'printf("Hey")'

因此,去掉引号并在引用的问题中使用答案就足够了,

例如

expr (int) myVector.__begin_[0]

获取向量中仓位的单个值。

使用 p myVectorpo myVector 。这些将以几种不同的格式打印出矢量的内容(以及大小(。

要从向量打印单个值,可以使用类似 p (int)myVector[0] .