我们如何获得 GDB 中的物理地址?

Cpp*_*ner 5 debugging gdb visual-studio

操作系统阻止 GDB 给我们物理地址,取而代之的是我们有虚拟地址。有没有办法实际获得那个物理地址?

在 Windows Visual Studio 上进行调试看起来更有希望:地址看起来更像真实地址。然而,它们真的是物理地址吗???

我已经使用以下源代码研究 GDB 和 Visual Studio 几天了(你可以从我的个人资料中看出这一点)

int main()
{
  int a = 10;
  int b = 13;
  int c;
  c = a + b;
  return 0;

}
Run Code Online (Sandbox Code Playgroud)

PS:我知道我一直在问很多类似的问题。这是一个非常广泛的话题,我感谢大家的大力帮助。JFYI,现在是凌晨 3:36 :( 在我来这里提问之前,我做了很多研究 + 测试。谢谢。

sin*_*law 3

如果您指的是物理内存硬件上的实际地址,那么实际上并不存在这样的事情(考虑操作系统可能决定将页面交换到磁盘等)

请参阅此处:如何将虚拟内存地址转换为物理地址?