【发布时间】:2023-03-21 12:17:01
【问题描述】:
为了可读性,最好能有多行“脚本”(无论 WinDBG 的语法是什么)代码。
例如,我想在一块内存中搜索看起来有点像 wxArrayString 的东西...
r $t1 = 0xe53801c
r $t2 = 0x2e800
.for (r $t3 = 0; @$t3 < 0x400; r $t3 = @$t3 + 1) {
.if (@@c++(
((int)(((MyModule!wxArrayString*)(@$t1+@$t2+(@$t3*8)))->m_compareFunction) >= 0x10000) &&
((int)(((MyModule!wxArrayString*)(@$t1+@$t2+(@$t3*8)))->m_pItems) >= 0x10000) &&
(((MyModule!wxArrayString*)(@$t1+@$t2+(@$t3*8)))->m_nCount <= 5000) &&
(((MyModule!wxArrayString*)(@$t1+@$t2+(@$t3*8)))->m_nCount > 0) &&
(((MyModule!wxArrayString*)(@$t1+@$t2+(@$t3*8)))->m_nSize <= 10000) &&
(((MyModule!wxArrayString*)(@$t1+@$t2+(@$t3*8)))->m_nSize > 0)
)) {
dx ((MyModule!wxArrayString*)(@$t1+@$t2+(@$t3*8)))
}
}
将其合并到一行中并不太难,但如果我不必每次想测试代码更改时都必须这样做,那就太好了。
有没有办法做到这一点(使用续行或其他魔法)?
【问题讨论】:
-
@LexLi,这是一个已知的限制吗?这至少可以回答我的问题。
-
运行脚本的命令是什么?还是将其复制/粘贴到 WinDbg 命令窗口中?
-
我正在复制/粘贴,但我想可以轻松切换到运行脚本。
-
我想对实际问题的简短回答是:否。 WinDBG 不以任何正常/合理的方式支持多行命令。
标签: windbg