在特定点打印结构变量

时间:2014-04-10 14:20:09

标签: c++ c unix gdb

假设我们有一个带有一些变量的结构。

是否可以在特定执行点处对这些变量的值进行调整..?

一种方法可能是单独打印每一种。

但我的观点是,有没有办法在特定时间点检查该结构中所有变量的值,而不必使用printf或cout来打印每个变量值。?

只是想知道这是否有可能至少在gdb .. !!

1 个答案:

答案 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 ++解析器。