如何在Xcode中获取c ++枚举值?

时间:2017-06-23 09:27:16

标签: xcode enums lldb

我想知道是否可以在Xcode中获取c ++枚举项的值。

在Visual Studio中,您只需要悬停项目,并且您获得了一个带有其值的工具提示,但它在Xcode中不会执行相同的操作。

我还试图在lldb控制台中打印该值但没有成功。

例如,使用这个简单的枚举:

enum Params{
    eP1,
    eP2,
    eP3,
    eP4,
    eP5,
};

我尝试了不同的方法,例如p eP1p Param::eP1

我也尝试使用enum class,结果相同。

1 个答案:

答案 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依赖于加速器表进行查找(否则它必须查看所有调试信息,这对于大型应用程序来说可能会非常慢)。目前的加速器表只有枚举的名称,而不是元素名称。