Допустим, у нас есть структура с некоторыми переменными.
Возможны ли значения этих переменных в конкретной точке исполнения..?
Одним из способов может быть печать каждого из них по отдельности.
Но я хочу сказать, есть ли способ проверить значения всех переменных в этой структуре в определенный момент времени, не используя printf или cout для печати каждого значения переменной.?
Просто интересно, возможно ли это по крайней мере в gdb.. !!
это возможно в 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++.