没有办法撤消 windbg 中的内存更改吗?
There's no way to undo memory changes in windbg?
我正在尝试撤消内存中的更改 window:
但是 CTRL-Z 不起作用,也没有这样的菜单项:
是否支持此功能?
在进行实时调试时,撤消功能一般用处不大。如果线程结束,您不能简单地重新创建它。如果跨过一条线,就不能轻易回到之前的状态。如果关闭文件句柄,则无法轻松重新打开它。
如果您更改了内存,WinDbg 应何时禁用撤消该操作的功能?一旦该内存被进程写入?或者即使在您编辑后写入了内存,您是否希望能够撤消?
那么要撤消到哪些内存内容呢?到您输入的值(即撤消流程完成的操作)或您输入它们之前的值(即撤消您所做的编辑,包括流程所做的更改)或仅撤消您编辑的那些值并且还没有被流程改变?
如您所见,在调试场景中实现撤消功能会变得非常困难。恕我直言,WinDbg 从未设计为具有撤消功能。
我什至会说人们不会使用内存 window 来编辑内存内容。为什么?
当您进行调试会话时,您希望记录您的步骤,以便您自己或其他人可以验证和重现您的操作。在这种情况下,您使用 .logopen
并记录您所做的一切。在命令 window 之外完成的操作将不会被记录,因此会破坏验证工作流程。
你会做什么?您可以使用 d
isplay 命令之一(db
、dd
、dp
或类似命令)在编辑前显示内存内容。然后使用 e
dit 命令(eb
、ed
、...)更改内存。每当您想要恢复旧值时,您都会查看 d
命令的先前输出并再次 e
这些值。
我正在尝试撤消内存中的更改 window:
但是 CTRL-Z 不起作用,也没有这样的菜单项:
是否支持此功能?
在进行实时调试时,撤消功能一般用处不大。如果线程结束,您不能简单地重新创建它。如果跨过一条线,就不能轻易回到之前的状态。如果关闭文件句柄,则无法轻松重新打开它。
如果您更改了内存,WinDbg 应何时禁用撤消该操作的功能?一旦该内存被进程写入?或者即使在您编辑后写入了内存,您是否希望能够撤消?
那么要撤消到哪些内存内容呢?到您输入的值(即撤消流程完成的操作)或您输入它们之前的值(即撤消您所做的编辑,包括流程所做的更改)或仅撤消您编辑的那些值并且还没有被流程改变?
如您所见,在调试场景中实现撤消功能会变得非常困难。恕我直言,WinDbg 从未设计为具有撤消功能。
我什至会说人们不会使用内存 window 来编辑内存内容。为什么?
当您进行调试会话时,您希望记录您的步骤,以便您自己或其他人可以验证和重现您的操作。在这种情况下,您使用 .logopen
并记录您所做的一切。在命令 window 之外完成的操作将不会被记录,因此会破坏验证工作流程。
你会做什么?您可以使用 d
isplay 命令之一(db
、dd
、dp
或类似命令)在编辑前显示内存内容。然后使用 e
dit 命令(eb
、ed
、...)更改内存。每当您想要恢复旧值时,您都会查看 d
命令的先前输出并再次 e
这些值。