简而言之,我想创建一个断点,将部分内存保存到文件并继续,如下所示:
bp mymodule!MyReader::issueRead+0x2e ".writemem C:\writemem\write_$t1 rdx L r8; g"
$t1 是在其他断点递增的计数器。问题是 $t1(或 ${$t1} 未在文件名中解析,我以名为“write_$t1”的文件结尾
最佳答案
WinDbg 的脚本总是有点老套。以下似乎有效,尽管我还没有将它应用于断点:
aS /c filename .printf "c:\\writemem\\write_%i", $t1; .block {.writemem ${filename} 00ba0000 L1}; ad filename
当您将它应用于断点时,您可能必须再次转义引号。
aS
定义别名,/c
通过使用命令来实现。在本例中,我使用 .printf
格式化字符串。然后定义变量filename
。
WinDbg 会立即扩展别名,即它会在尚未定义 filename
时执行此操作。因此我使用 .block
来创建一个新的范围。
最后,ad
再次删除别名。
关于windows - 如何使用伪寄存器(如 $t1)作为 .writemem windbg 命令文件名的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42386460/