vimspector,读取内存地址

问题描述 投票:0回答:1

我试图调试(出于学习目的)用 C 语言编写的简单程序。我使用 vimspector(gdb) 作为调试器。
如何使用 vimspector 读取特定地址的内存?
我发现 vimspector 可以做到这一点(有人截图为证): https://camo.githubusercontent.com/da69c1bda28db4e3f22f35ac9d52b22b1eab80afcfabd2003b98aefeb7e54929/68747470733a2f2f61736369696e656d612e6f72672f612f6573456e634178503435434a6d6f38456d31735174785259652e737667

vimspector 自述文件的“转储内存”部分 说:

一些调试适配器提供了一种转储与变量关联的进程内存的方法。这可以从变量和监视窗口完成:

  • WinBar 选项“转储”
  • m映射(默认,可自定义)
  • vimspector#ReadMemory() 函数

我尝试调用函数 vimspector#ReadMemory,但每次都出错

:call vimspector#ReadMemory()
Cannot find memory reference for that

:call vimspector#ReadMemory(myvar)
E116: Invalid arguments for function vimspector#ReadMemory

:call vimspector#ReadMemory(0x7ffff7e959d7)
TypeError: vimspector.debug_session.DebugSession.ReadMemory() argument after ** must be a mapping, not str

当我尝试

<leader>m
什么都没发生。

linux debugging memory gdb vimspector
1个回答
0
投票

我也发现了这个问题并通过谷歌搜索,找到了你的问题,但似乎没有人回答,通过几分钟的尝试,我找到了根本原因,你需要在变量或观察窗口中触发这个功能,默认情况下,他们布局在左侧。然后你可以在变量或地址上按m,魔法就会发生。

请注意,触发m后,您需要等待大约2秒,然后vimspector会要求您输入一些参数以转储内存。

希望对你有帮助

© www.soinside.com 2019 - 2024. All rights reserved.