Печать структуры вариабелей в определенной точке

0

Допустим, у нас есть структура с некоторыми переменными.

Возможны ли значения этих переменных в конкретной точке исполнения..?

Одним из способов может быть печать каждого из них по отдельности.

Но я хочу сказать, есть ли способ проверить значения всех переменных в этой структуре в определенный момент времени, не используя printf или cout для печати каждого значения переменной.?

Просто интересно, возможно ли это по крайней мере в gdb.. !!

  • 3
    GDB печатает все элементы структуры при печати экземпляра структуры. Вы пробовали это? Обратите внимание, что вы должны сначала разыменовать указатели на структуры. Печать указателя печатает только его адрес.
Теги:
gdb

1 ответ

2

это возможно в gdb, без проблем:

Например:

хс

#include <iostream>

struct A {
  int x;
  int y;
};

int main(int argc,char **argv) {
   A a;
   a.x=10;
   a.y=11;
   std::cout << "Hello world" << std::endl;
}

компилирования:

g++ -g -x xC

работает на gdb

gdb x

(gdb) break main
Breakpoint 1 at 0x40096c: file x.C, line 10.
(gdb) run
Starting program: /home/jsantand/x 

Breakpoint 1, main (argc=1, argv=0x7fffffffde98) at x.C:10
10     a.x=10;
(gdb) next
11     a.y=11;
(gdb) next
12     std::cout << "Hello world" << std::endl;
(gdb) print a
$1 = {x = 10, y = 11}
(gdb) quit

Выполнение этого кода, следов и т.д. Будет сложнее, поскольку C++ не имеет отражения.

Вы можете сделать это вручную или если вы предприимчивы, создайте что-то, чтобы автоматически генерировать оператор << для ваших классов - структуры/классы, чтобы они отображали строковое представление. Вам необходим какой-то основной анализатор C++.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню