lldb C ++调试包含动态类的stl容器

时间:2014-03-21 18:54:04

标签: c++ xcode5 lldb

我在Xcode上编写C ++,唯一的选择是lldb。我定义了一个类型为

的变量
std::list<State> states;

并且 Class 是一个自定义的类。我尝试使用 expr 命令和框架变量,但他们无能为力。

expr 的结果是

  

错误:无法实现struct:变量状态的大小(24)不同于ValueObject的大小(0)

帧变量的结果是

(std::__1::list<State, std::__1::allocator<State> >) states = <variable not available>

1 个答案:

答案 0 :(得分:0)

此程序中的变量已经过优化。来自expr / p的错误消息有点不幸 - 树顶部的更改应该允许发出真正的错误 - 但行为是正确的。 frame variable输出是正确的错误消息。

你可以随时

(lldb) image lookup -v -a $pc

查看程序中某个点的所有可见变量的位置。它们以DWARF表达式的形式表示,该表达式通常以帧基寄存器(DW_OP_fbreg)表示,例如,在x86_64上通常为rbp

如果列出的变量带有空location=字段,则表示此pc位置的变量值不可用。