在VC++(立即窗口)调试模式下调用函数

9
我是否可以在VC++的调试模式下调用函数?假设我有一个函数,在其中设置了断点,当调试时执行到该点时,我是否可以调用其他函数并查看它们的结果,然后再继续执行下一行代码?

我不这么认为。调试器可以帮助在执行的顺序过程中停止,但不能颠覆它。 - Mahesh
2个回答

6

我相信你可以。我认为它被称为立即窗口。我使用的是VS2010 Ultimate,所以我不知道它是否存在于你的版本中。

Ctrl + Alt + I

但是这仅在函数返回值时才打印输出。此外,在某些情况下可能无法正常工作。

假设你有:

#include <iostream>

int number = 10; //global
void setNumber(int n);

int main()
{
    std::cout<<std::endl; //breakpoint 1 here
    setNumber(4);
    std::cout<<std::endl; //breakpoint 2 here
}

int getNumberSquared()
{
    return number * number;
}

void setNumber(int n)
{
    number = n;
}

当您遇到断点1时,请按快捷键并输入:
getNumberSquared()

输出结果将为100。 遇到断点2后,重复同样的操作,输出结果将为16

1
谢谢。我已经这样做了,但是出现了这个错误:CXX0052:错误:成员函数不存在。我正在使用没有源代码的预编译库,因此我无法进入它们的任何函数;然而,技术支持表示我仍然可以调用库中的任何函数并在调试模式下查看其输出,就像查找数组大小一样。 - Jawad
啊,正如我所说,交互模式并不总是有效。但大多数情况下它都可以使用。我无法告诉您它与库的兼容性方面的任何信息。 - devjeetroy
谢谢。我会尝试其他函数,希望能有所作为。 - Jawad

1

Visual Studio有跳转到特定语句的选项(右键单击+设置下一条语句ctrl+shift+F10),但在执行此操作时要注意。函数调用需要寄存器有效,如果跨类或超出范围,则寄存器很可能无效。


@Jawad 这当然是设计上的。运行时无法知道你想要什么... - Luchian Grigore

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接