首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用GDB检查c++映射中的单个元素并访问映射中的元素所指向的对象的成员

问如何使用GDB检查c++映射中的单个元素并访问映射中的元素所指向的对象的成员
EN

Stack Overflow用户
提问于 2020-03-15 19:32:06
回答 1查看 349关注 0票数 0

使用GDB,我希望访问映射中元素的成员变量指针,以检查所述指针所引用的对象的值。

请考虑下面的程序。

代码语言:javascript
复制
#include <iostream>
#include <map>

struct Parent
{
    std::string phone_number;
    Parent(std::string num): phone_number(num){}
};

struct Student
{
    int student_id;
    std::string student_name;
    Parent* parent = nullptr;

    Student(int id, std::string name):student_id(id), student_name(name) {}

};

int main()
{
    Parent* p_tim = new Parent("0712323456");
    Parent* p_tom = new Parent("0112122123");

    Student ann(1, "Anne");
    Student bobby(2, "Bobby");

    ann.parent = p_tim;
    bobby.parent = p_tom;

    std::map<std::string, Student> students;
    students.insert(std::make_pair("ann", ann));
    students.insert(std::make_pair("bob", bobby));

    for(auto student:students)
    {
        std::cout << "Student: ID = " << student.second.student_id << " and Name: " << student.second.student_name << std::endl;
    }

    return 0;
}

我可以使用以下命令查看地图的内容。

代码语言:javascript
复制
(gdb) p students
$1 = std::map with 2 elements = {["ann"] = {student_id = 1,
    student_name = "Anne", parent = 0xa85ed0}, ["bob"] = {student_id = 2,
    student_name = "Bobby", parent = 0xa85f20}}

我想检查映射中单个元素中的父对象。例如,我想从这张地图上查看安的父母的电话号码。但我不能像下面这样访问它。

代码语言:javascript
复制
(gdb) p students["ann"].parent->phone_number
Could not find operator[].

你能告诉我GDB是怎么做到的吗?

我认为这应该是可能的(从命令行GDB),因为VS代码中的可视化调试器显示了这些信息。

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-16 01:37:44

,你能告诉我在GDB是怎么做到的吗?

您可以一直这样做:(gdb) p *(Parent*) 0xa85ed0。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60696796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档