C++ LLDB给出了;使用未声明的标识符“;局部变量的错误

C++ LLDB给出了;使用未声明的标识符“;局部变量的错误,c++,xcode,lldb,C++,Xcode,Lldb,在以下函数中,我无法在LLDB中看到“recordMap”。for循环打印键,recordType设置正确,但“p recordMap”给出错误“使用未声明的标识符”。我可以在LLDB中很好地看到变量'recordType',因此我在正确的范围内。当我在LLDB中键入“recordMap”时,它会自动完成,就好像它在那里一样 我已将调试和发布的优化设置为“无”。这可能是什么 void MezNetworkController::showRecord( std::map<string, Me

在以下函数中,我无法在LLDB中看到“recordMap”。for循环打印键,recordType设置正确,但“p recordMap”给出错误“使用未声明的标识符”。我可以在LLDB中很好地看到变量'recordType',因此我在正确的范围内。当我在LLDB中键入“recordMap”时,它会自动完成,就好像它在那里一样

我已将调试和发布的优化设置为“无”。这可能是什么

void MezNetworkController::showRecord( std::map<string, MezSQLData*> recordMap ) {

    for( auto item : recordMap )
        printf( " KEY: %s\n", item.first.c_str() );

    int recordType = (int) recordMap["messageType"]->intValue();
    printf( recordType );
}
void MezNetworkController::showRecord(std::map recordMap){
用于(自动项:记录映射)
printf(“键:%s\n”,item.first.c_str());
int recordType=(int)recordMap[“messageType”]->intValue();
printf(记录类型);
}
以下是lldb中“图像查找-va$pc”的结果:

      Address: Mezmo[0x00015ed0] (Mezmo.__TEXT.__text + 45272)
      Summary: Mezmo`MezNetworkController::showRecord(std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, MezSQLData*, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, MezSQLData*> > >) + 780 at MezNetworkController.cpp:774
       Module: file = "/Users/paulslocum/Dropbox/_iOS/_414 Messenger_/DerivedData/414 Messenger/Build/Products/Debug-iphoneos/Mezmo.app/Mezmo", arch = "armv7"
  CompileUnit: id = {0x00000000}, file = "/Users/paulslocum/Dropbox/_iOS/_414 Messenger_/414 Messenger/MezNetworkController.cpp", language = "ISO C++:1998"
     Function: id = {0x400015fa2}, name = "showRecord", range = [0x000c2bc4-0x000c42a6)
     FuncType: id = {0x400015fa2}, decl = MezNetworkController.hpp:60, clang_type = "void (void)"
       Blocks: id = {0x400015fa2}, range = [0x000c2bc4-0x000c42a6)
    LineEntry: [0x000c2ed0-0x000c2ee6): /Users/paulslocum/Dropbox/_iOS/_414 Messenger_/414 Messenger/MezNetworkController.cpp:774:38
       Symbol: id = {0x000001f8}, range = [0x000c2bc4-0x000c42a8), name="MezNetworkController::showRecord(std::__1::map<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, MezSQLData*, std::__1::less<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > >, std::__1::allocator<std::__1::pair<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const, MezSQLData*> > >)", mangled="_ZN20MezNetworkController10showRecordENSt3__13mapINS0_12basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEP10MezSQLDataNS0_4lessIS7_EENS5_INS0_4pairIKS7_S9_EEEEEE"
     Variable: id = {0x400015fb6}, name = "this", type = "MezNetworkController *", location =  [sp+1068], decl = 
     Variable: id = {0x400015fc5}, name = "recordType", type = "int", location =  [sp+1028], decl = MezNetworkController.cpp:774
地址:Mezmo[0x00015ed0](Mezmo.\uuuuuuu TEXT.\uuuuuuuuu TEXT+45272)
摘要:Mezmo`MezNetworkController::showRecord(std:_1::map)+780位于MezNetworkController.cpp:774
模块:file=“/Users/paulslocum/Dropbox/_iOS/_414messenger\u/DerivedData/414 Messenger/Build/Products/Debug iphoneos/Mezmo.app/Mezmo”,arch=“armv7”
CompileUnit:id={0x00000000},file=“/Users/paulslocum/Dropbox/\u iOS/\u 414 Messenger\u 414 Messenger/MezNetworkController.cpp”,language=“ISO C++:1998”
函数:id={0x400015fa2},name=“showRecord”,范围=[0x000c2bc4-0x000c42a6)
FuncType:id={0x400015fa2},decl=MezNetworkController.hpp:60,clang_type=“void(void)”
块:id={0x400015fa2},范围=[0x000c2bc4-0x000c42a6)
行条目:[0x000c2ed0-0x000c2ee6):/Users/paulslocum/Dropbox/\u iOS/\u 414 Messenger\u 414 Messenger/MezNetworkController.cpp:774:38
Symbol:id={0x000001f8},范围=[0x000c2bc4-0x000c42a8],name=“MezNetworkController::showRecord(std::”映射)”,mangled=“\uzn20MezNetworkController10ShowRecordenst3\u13Mapins0\u12Basic\u11Char\u11TraitsIcens0\u9AllocatorIEEE10MezSQLDatans0\u4Airiks7\u9EEEE0”
变量:id={0x400015fb6},name=“this”,type=“MezNetworkController*”,location=[sp+1068],decl=
变量:id={0x400015fc5},name=“recordType”,type=“int”,location=[sp+1028],decl=MezNetworkController.cpp:774
变量“recordMap”未列在“image lookup”输出中;这意味着您当前所在位置的LLDB实际上无法使用该变量

这通常是由编译器生成的调试信息的一个问题,编译器在其中忽略了变量。当调试器没有被告知某个变量或该变量在内存中的位置时,不幸的是,调试器无能为力


作为一种解决方法,您可以手动打印键/值绑定(我看到您已经在为键执行此操作),但我会向clang编译器提交一份关于缺少变量的错误报告

如果在提示下键入image lookup-va$pc,LLDB会说什么?@EnricoGranata我将其粘贴到问题文本中