我在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>
答案 0 :(得分:0)
此程序中的变量已经过优化。来自expr
/ p
的错误消息有点不幸 - 树顶部的更改应该允许发出真正的错误 - 但行为是正确的。 frame variable
输出是正确的错误消息。
你可以随时
(lldb) image lookup -v -a $pc
查看程序中某个点的所有可见变量的位置。它们以DWARF表达式的形式表示,该表达式通常以帧基寄存器(DW_OP_fbreg
)表示,例如,在x86_64上通常为rbp
。
如果列出的变量带有空location=
字段,则表示此pc位置的变量值不可用。