3

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

我知道 GDB 中的displayandcommands命令,但它们似乎不是我想要的。在 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 窗口中,我看到:

在此处输入图像描述

有没有办法让 GDB 向我显示当前和以前的表达式的值,无论它们是什么,如这里的 Autos 窗口所示? 编辑请注意,我没有输入i上面的屏幕截图——调试器为我做了这些,它在程序的每一步都显示了潜在的差异表达式。我正在寻找那种自动显示。

4

2 回答 2

1

自从我使用“ddd”(这是一个运行在 GDB 之上为您提供 GUI 功能的应用程序)以来已经有很长时间了,但它可能会给您您想要的东西 - 它确实可以很好地显示您正在执行的行并且可以显示本地单独窗口中的变量等 ddd

如果您去寻找,GDB 可能还有其他 GUI 层。

否则,恐怕显示器可能是您最接近的。

于 2012-12-21T22:48:26.600 回答
0

你可以使用display命令来做你想做的事。您还可以使用commands命令在遇到断点时执行命令列表。

于 2012-12-21T21:23:55.290 回答