windows - 如何使用伪寄存器(如 $t1)作为 .writemem windbg 命令文件名的一部分

标签 windows windbg

简而言之,我想创建一个断点,将部分内存保存到文件并继续,如下所示:

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/

相关文章:

windows - ActiveState Perl CPAN dmake 不工作

windows - 在 windbg 中的 COM 类方法上设置断点

windbg - 编写 WinDBG 脚本以在每次中断时获取调用堆栈然后继续(未处理的 ex,或调试者说 debug.break())

windows - 从 Microsoft 符号服务器下载符号

windows - 通过 Cygwin 运行 Windows .EXE 本质上比通过 BAT 运行更慢吗?

windows - 在 Azure Web 角色中创建线程

windows - 在Windows 7上禁用 “unstable”应用程序的特殊处理

windows - 如何获取 git 存储库中每个修订版的文件 list ?

.net - 我可以在不附加VS调试器的情况下从CLR异常获取堆栈跟踪信息吗?

debugging - 崩溃调试Win32 App