代码之家  ›  专栏  ›  技术社区  ›  Simsons

有没有一个CPU模拟器或一种方法来查看如何在内存中创建和销毁东西

  •  1
  • Simsons  · 技术社区  · 15 年前

    好的,这个问题不完全是一个编程问题,但这才是真正能使编程更加实用和易于实现的问题。

    这个问题在我每次写作时都会出现 int c=10; MyClass objMyClass=new MyClass(); 我想知道值在内存中的创建位置(尽管我们现在可以将地址看作十六进制值)。

    我们能看到(当我们声明一个变量时)在内存中创建它的位置吗?在哪种状态下,即: C#->IL->Machine Language ,是内存中存在的变量。现在不同的事件和函数如何更新其值。这就像我的CPU模拟器。

    我问这个问题是因为这个问题在我脑海中浮现了很久?当我了解到一个新的概念时,我的反应是,好的,它在记忆中是怎样的。

    3 回复  |  直到 15 年前
        1
  •  4
  •   Community CDub    8 年前

    如果将sos.dll(或psscor2.dll)扩展加载到windbg,甚至加载到Visual Studio中,您可以看到所有这些内容。

    SoS是.NET框架的一部分,它基本上将本机调试器(如windbg)转换为“托管代码感知”调试器。

    SOS有一些命令,可以让您检查托管堆、对象及其引用等。

    有关详细信息,请参阅 Tess' excellent blog .

    有关如何使用SOS的另一个示例,请参见 this question .

        2
  •  3
  •   Community CDub    8 年前

    Microsoft调试器的.NET扩展名为“sos”,允许您检查.NET CLR的内存和其他内部结构。

    这是一个相当低级的工具,因此需要一段时间才能熟练使用。我建议您搜索以下教程。

    • Debugging Tools for Windows 包括调试器(windbg和cdb)。
    • strike之子(sos.dll)随.NET运行时一起提供,位于 %WINDIR%\Microsoft.NET\Framework*\SOS.dll .

    这也可能是值得寻找的 SoS , memory-management memory-leaks 有关stackoverflow的问题。

        3
  •  2
  •   Andrey    15 年前

    你需要一个好的调试程序,它们能够详细地处理场景背后发生的事情。你可以从Visual Studio开始,如果还不够的话,可以尝试更复杂的调试器,比如IDA或Ollydbg。

    推荐文章