使用GDB,我希望访问映射中元素的成员变量指针,以检查所述指针所引用的对象的值。
请考虑下面的程序。
#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;
}我可以使用以下命令查看地图的内容。
(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}}我想检查映射中单个元素中的父对象。例如,我想从这张地图上查看安的父母的电话号码。但我不能像下面这样访问它。
(gdb) p students["ann"].parent->phone_number
Could not find operator[].你能告诉我GDB是怎么做到的吗?
我认为这应该是可能的(从命令行GDB),因为VS代码中的可视化调试器显示了这些信息。

发布于 2020-03-16 01:37:44
,你能告诉我在GDB是怎么做到的吗?
您可以一直这样做:(gdb) p *(Parent*) 0xa85ed0。
https://stackoverflow.com/questions/60696796
复制相似问题