LLDB 给出局部变量的“使用未声明的标识符”错误

2024-04-26

在以下函数中,我无法在 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 );
}

下面是 lldb 中“image Lookup -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

变量“recordMap”未在“图像查找”输出中列出;这意味着 LLDB 实际上无法使用您当前的位置

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LLDB 给出局部变量的“使用未声明的标识符”错误 的相关文章

  • clang-tidy - 忽略第三方标头代码

    我正在为我的项目使用 CMake 并且我想向项目引入 clang tidy 检查 我用于此目的CMAKE CXX CLANG TIDY and clang tidy用于检查设置的文件 我想在 CI 中使用警告作为错误来可靠地检查提交是否引入
  • Swift 3 中的隐藏按钮

    我刚刚开始编码 我真的很想知道如何隐藏按钮 我想做的是当我按下按钮时 Start 我想让开始按钮和后退按钮消失 这是通过插座和操作完成的 我已经搜索了一下 但是当我想做的时候 它说do关键字应该指定一个语句块 我希望有人能帮助我 连接插座后
  • 返回 ObjectResult 会导致 406 Not Acceptable

    在学习 Scott Allen 的 Pluralsight 课程 Asp net Core 1 0 基础知识 时 在 MVC 框架中的控制器 模块和 操作结果 部分中 我在 Index 操作方法上遇到了 406 Not Acceptable
  • 一个阻塞但非模态的 QDialog?

    我有一堆图像 我想对其执行一些操作 处理完每个图像后 我的程序应该弹出一个对话框 提示用户是否要继续处理下一个图像或中止 在此之前 他们应该有机会对图像或参数进行一些手动更改 无论如何 他们必须能够访问应用程序的窗口 而调用对话框的方法的执
  • 您在 C# 或 .NET 中见过的最奇怪的极端情况是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 PrimarySearcher.FindAll() 时出现内存泄漏

    我也有一个使用插件和应用程序域长时间运行的服务 并且由于使用目录服务而出现内存泄漏 请注意 我正在使用 system directoryservices accountmanagement 但据我了解 它使用相同的底层 ADSI API 因
  • 在 Winforms 中,PreviewKeyDown() 从未针对任何键触发

    我最初试图让我的程序获取箭头键 上 下 左 右 的输入 但发现在 KeyDown 中这些键从未出现过 后来我发现我可以通过进入 PreviewKeyDown 函数并设置来启用箭头键 e IsInputKey true 及其周围的任何条件和逻
  • gcc总是做这种优化吗? (公共子表达式消除)

    作为示例 假设表达式sys gt pot atoms item gt P kind mass在循环内求值 循环只改变item 因此表达式可以简化为atoms item gt P kind mass通过将变量定义为atoms sys gt p
  • 如何使用实体框架更新特定记录的一个字段?

    我想要更新一个名叫 Pejman 的人的家庭情况 这是我的对象类 public class Person public int Id get set public string FirstName get set public string
  • 在 C、C++ 中实现腐蚀、膨胀

    我对二值图像的膨胀是如何完成的有理论上的了解 AFAIK 如果我的 SE 结构元素 是这样的 0 1 1 1 在哪里 代表中心 我的图像 二进制是这样的 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0
  • 从 WMI 运行 exe 时的网络身份验证

    我有一个 C exe 需要使用 WMI 运行并访问网络共享 但是 当我访问共享时 我收到 UnauthorizedAccessException 如果我直接运行 exe 则可以访问共享 我在这两种情况下都使用相同的用户帐户 我的应用程序有两
  • 自定义编译器警告

    在 Net 中使用 ObsoleteAtribute 时 它 会向您发出编译器警告 告诉您该对象 方法 属性已过时 应使用其他内容 我目前正在从事一个需要大量重构前员工代码的项目 我想编写一个自定义属性 可用于标记方法或属性 这些方法或属性
  • C# - 使用 Linq 获取 Attribute 的属性

    我有一个属性 它本身就有属性 我想访问这些属性之一 布尔值 并检查它是否正确 我能够检查属性是否已设置 但这就是全部 至少对于 linq 来说是这样 属性 public class ImportParameter System Attrib
  • 在 Qt C++ 中使用多个键

    我正在构建 坦克 游戏 我使用关键事件在地图上运行我的坦克 实际上我当时只能使用一把钥匙 但我需要有能力去完成任务 同时向上和离开 这是我的单键事件代码 switch event gt key case Qt Key Up if ui gt
  • 奇怪的 MSC 8.0 错误:“ESP 的值未在函数调用中正确保存...”

    我们最近尝试将一些 Visual Studio 项目分解为库 并且在测试项目中一切似乎都编译和构建得很好 其中一个库项目作为依赖项 然而 尝试运行该应用程序给我们带来了以下令人讨厌的运行时错误消息 运行时检查失败 0 ESP 的值未在函数调
  • C++ 中的 Ofstream 数组

    我想要在我的项目中使用 41 个输出文件来在其上写入文本 首先创建一个字符串数组list为了命名这些输出文件 然后我尝试定义一个 ofstream 对象数组并使用list命名它们 但我收到此错误 outfile cannot be used
  • 通过 boost::python 将 C++ 对象传递给 python 函数

    我想在 C 应用程序中使用嵌入 python 并调用 python 脚本中定义的函数 该函数的参数是一个 C 对象 看我的代码 class Test public void f std cout lt lt sss lt
  • 如果 foreach 是一个结构数组,它会复制每个元素吗?

    我有一个结构数组 做foreach运算符在迭代数组时复制每个元素 据我所理解foreach只是底层的语法糖转换为for 所以看来答案是否定的 但我很想得到一些确认 PS 看来应该有人已经问过了 但我无法轻易找到任何东西 因此 请以提供的参考
  • C 警告函数调用中缺少标记

    这是我的警告 Missing sentinel in function call 我怎样才能删除它 我正在使用 linux 和 gcc 编译器 看来您可能没有终止数组声明NULL 如果没有 null 您可能会遇到一些内存怪异 因为运行时将不
  • 如何注销多个非当前用户的会员用户?

    我正在使用属于 MVC2 默认项目一部分的 MembershipProvider 我希望能够获取用户名列表 注销用户 并在需要时销毁他们的会话 我能想到的最接近的是 foreach string userName in UserNames

随机推荐