自动打印GDB中最后一个表达式的值,如VisualStudio的“自动”监视窗口

时间:2012-12-21 21:11:18

标签: c++ linux gdb

VisualStudio的调试器有一个名为Auto Window的功能,它始终显示当前和上一个表达式的值。有没有办法在GDB中实现类似的行为,特别是对于C ++应用程序?

我知道GDB中的displaycommands命令,但它们似乎并不是我想要的。在VS中,调试器会自动确定要评估的表达式,然后在程序的每一步中对其进行评估。这个功能 - 自动确定要评估的表达式 - 是我想要GDB做的。

例如,假设我正在逐步执行此代码:

#include <cstdlib>
#include <iostream>
#include <iomanip>
#include <sstream>
using namespace std;

int main()
{
    string s = "Hello";
    s += "World";

    int i = 2;
    i *= 3;
    i *= 7;

    stringstream ss ;
    ss << "The result is " << i << "!\n";
    ss << "Now, what was the question?";

    s += ss.str();

    cout << s << endl;

}

......我即将执行i*=7行。在VS的Autos窗口中,我看到:

enter image description here

有没有办法让GDB向我展示当前和之前的exppressions的价值,无论它们是什么,如此处的Autos窗口所示? 编辑请注意,我没有在上面的屏幕截图中输入i - 调试器为我做了这个,并且它显示了程序中每一步的潜在差异表达式。我正在寻找自动显示器。

2 个答案:

答案 0 :(得分:1)

自从我使用“ddd”(这是一个运行在GDB之上的应用程序为你提供GUI功能)以来,已经有很长一段时间了,但是它可以为你提供你想要的东西 - 它肯定很好地显示了你正在执行的行和可以在separte窗口中显示局部变量等。 ddd

如果你去看看,GDB可能还有其他的GUI层。

否则,显示可能是你得到的最接近的,我害怕。

答案 1 :(得分:0)

您可以使用display命令执行所需操作。您还可以使用commands命令在遇到断点时执行命令列表。