我想知道是否可以在Xcode中获取c ++枚举项的值。
在Visual Studio中,您只需要悬停项目,并且您获得了一个带有其值的工具提示,但它在Xcode中不会执行相同的操作。
我还试图在lldb控制台中打印该值但没有成功。
例如,使用这个简单的枚举:
enum Params{
eP1,
eP2,
eP3,
eP4,
eP5,
};
我尝试了不同的方法,例如p eP1
或p Param::eP1
。
我也尝试使用enum class
,结果相同。
答案 0 :(得分:1)
目前,您必须使用enumName:enumElement,但这对我有用:
> cat foo.cpp
#include <stdio.h>
enum Params
{
eP1,
eP2,
eP3,
eP4
};
int main()
{
enum Params elem = eP1;
printf ("%d\n", elem);
return 0;
}
> lldb a.out
(lldb) target create "a.out"
Current executable set to 'a.out' (x86_64).
(lldb) b s -p printf
Breakpoint 1: where = a.out`main + 29 at foo.cpp:14, address = 0x0000000100000f6d
(lldb) run
Process 26752 launched: '/private/tmp/a.out' (x86_64)
Process 26752 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
frame #0: 0x0000000100000f6d a.out`main at foo.cpp:14
11 int main()
12 {
13 enum Params elem = eP1;
-> 14 printf ("%d\n", elem);
^
15 return 0;
16 }
Target 0: (a.out) stopped.
(lldb) expr Params::eP1
(int) $0 = 0
如果您仍然无法使其发挥作用,您是否可以发布更完整的示例?
lldb,BTW的问题在于调试信息被组织成完整的调试信息,然后是名称 - > info加速器表。 lldb依赖于加速器表进行查找(否则它必须查看所有调试信息,这对于大型应用程序来说可能会非常慢)。目前的加速器表只有枚举的名称,而不是元素名称。