如何在 Visual Studio 调试器中查看段偏移内存地址?
我正在调试反汇编中的一些代码(没有可用的源代码),并且有许多指令通过 ds 段寄存器访问数据,例如:
66 3B 05 8A B1 43 00 cmp ax,word ptr ds:[43B18Ah]
How do you get the Visual Studio调试器告诉您 ds 段寄存器的偏移量,以便我可以检查它所引用的内存? Watch 窗口似乎不接受诸如 ds:[0x43B18A]
或变体之类的表达式;它会告诉我 ds 是 0,但这并没有告诉我段 0 的偏移量是多少。
是否有一些特殊的语法,或者这是 VS 无法做到的?如果使用其他调试器(例如 WinDbg 或 ntsd),我的运气会更好吗?
I'm debugging some code from the disassembly (no source code is available), and there a number of instructions accessing data via the ds
segment register, e.g. something like this:
66 3B 05 8A B1 43 00 cmp ax,word ptr ds:[43B18Ah]
How do you get the Visual Studio debugger to tell you the offset of the ds
segment register so that I can inspect the memory this is referring to? The Watch window does not seem to accept expressions like ds:[0x43B18A]
or variants; it will tell me that ds
is 0, but that doesn't tell me what segment 0's offset is.
Is there some special syntax for this, or is this something that VS just can't do? Would I have better luck with another debugger, such as WinDbg or ntsd?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是 Visual Studio 中内置的反汇编程序的一个怪癖。这是多余的,DS寄存器是默认的。忽略它即可,在 Windows 上,DS、CS 和 ES 寄存器设置为相同的值。保护模式选择器。与内存窗口使用的值相同。只需省略 ds: 前缀即可。
This is a quirk of the disassembler built into Visual Studio. It is superfluous, the DS register is the default. Just ignore it, on Windows the DS, CS and ES registers are set to the same value. A protected mode selector. And the same value used by the Memory window. Just omit the ds: prefix.