简而言之,我想创建一个断点,将部分内存保存到文件并继续,如下所示:
bp mymodule!MyReader::issueRead+0x2e ".writemem C:writememwrite_$t1 rdx L r8; g"
$t 1 是在其他断点中递增的计数器。问题是文件名中未解析$t 1(或 ${$t 1}),我以名为"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
再次删除别名。