假设我们有一个带有一些变量的结构。
是否可以在特定执行点处对这些变量的值进行调整..?
一种方法可能是单独打印每一种。
但我的观点是,有没有办法在特定时间点检查该结构中所有变量的值,而不必使用printf或cout来打印每个变量值。?
只是想知道这是否有可能至少在gdb .. !!
答案 0 :(得分:2)
可以在gdb中,没问题:
例如:
x.C
#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 -o x x.C
在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 ++缺乏反思,这将更加困难。
您可以手动完成,或者如果您喜欢冒险,可以创建一些自动生成运算符&lt;&lt;为您的类提供结构/类,以便它们提供字符串表示。至少你需要一些基本的C ++解析器。