Visual Studio 2008 - 显示堆栈

8

在调试过程中查看堆和栈是否可行?

5个回答

10
据我所知,你需要使用的主要窗口是Locals(Ctrl + Alt + VL)和Autos(Ctrl + Alt + VL)窗口,MSDN将其描述为:
  • The Locals窗口显示当前上下文或作用域中本地的变量。通常,这意味着您当前正在执行的过程或函数。调试器会自动填充此窗口。在Visual C#中,当禁用异常助手时,Locals窗口还会显示伪变量$exception,每当有活动异常时。您可以展开该伪变量以查看异常的详细信息。
  • Autos窗口显示用于代码当前行和前面一行的变量。对于本机C ++,Autos窗口还显示函数返回值。与Locals窗口一样,Autos窗口也由调试器自动填充。
  • ...而对于堆栈,有调用堆栈窗口(Debug -> Windows -> Call Stack)或Ctl + Alt + C
    但是,我觉得这不是你想要的。
    如果您正在寻找“内存”视图,您可能可以利用Visual Studio的Memory窗口,该窗口可以从Debug -> Windows -> Memory -> Memory x菜单(其中x为1-4)或Ctrl + Alt + M,1-4访问。
    正如一些人现在提到的那样,还有其他一些非常有用的内存调试外部工具(我主要使用SysInternals工具和Windows调试工具)。

    6
    您需要使用“调用堆栈窗口”... http://msdn.microsoft.com/en-us/library/a3694ts5.aspx 通过使用调用堆栈窗口,您可以查看当前在堆栈上的函数或过程调用。
    对于堆,可以使用“内存窗口”... http://msdn.microsoft.com/en-us/library/s3aw423e(VS.80).aspx 内存窗口提供了一个查看应用程序使用的内存空间的视图。
    “还原隐藏的调试器命令”也可能有用... http://msdn.microsoft.com/en-us/library/9k643651(VS.80).aspx 当您进行调试内存时,其他调试器将更加有用。正如某些人建议的那样,WinDbg非常适合内存调试。我自己经常使用IDA Pro反汇编器。

    0

    我知道这是一个旧问题,但我觉得还是要更新一下......

    Visual Studio 2015自带内存使用监视器,直接集成在诊断工具面板中。如果在您想检查的操作前、期间和后分别拍摄快照,您可以回顾这些快照的堆视图。

    希望这对某人有所帮助。


    0

    在调试时,您可以查看调用堆栈,但我认为这不是您要寻找的。您可能想尝试 Windbg 和 SOS,它们非常适合调试内存问题。学习曲线有点陡峭,但回报是巨大的。

    Windows 的 Microsoft 调试工具


    0

    如果您真的想查看原始内存,可以从“调试->窗口->内存”打开“内存”调试窗口,并在编辑框中写入要查看的地址。您还可以在编辑框中编写任何计算为地址的表达式,它将向您显示该地址,例如&variable

    这对于实际查看变量并不是非常有用,因为您将很难将原始字节解析为有意义的值,但它可以在调试情况下非常有用,特别是在怀疑存在缓冲区溢出或意外覆盖内存的情况下。与data-breakpoints结合使用时尤其有用。


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