【发布时间】:2020-05-15 09:45:06
【问题描述】:
如果我应该知道这一点,我深表歉意,但我知道如果可能,其他人会立即知道(我假设是这样),然后我可以知道未来。但是有没有可能将这两个命令合二为一呢?
0:006> ? @@(this->m_pSession->m_SessionContext._Mypair._Myval2._Bx._Buf)
Evaluate expression: 1628841015336 = 0000017b`3e7d7828
0:006> ?? (char *) 0x0000017b3e7d7828
char * 0x0000017b`3e7d7828
"BlahBlahBlah"
我本身没有问题,按顺序运行它们,但我认为我必须能够使用非常聪明的东西,比如括号之类的东西?,将第一个包裹在第二个中。 .. 但是,无论 我 尝试什么,我都只会让 Windbg 抱怨语法错误……这很公平……我是罪魁祸首。
第一个命令返回我想要的内容,即char * 的地址,但它实际上是否将您看到的所有内容都返回到控制台,这就是为什么我不能简单地做这样的事情?
?? (char *) (? @@(this->m_pSession->m_SessionContext._Mypair._Myval2._Bx._Buf))
让我的“BlahBlahBlah”得到回应?还是我只是缺少一些钝的 Windbg 语法要求?
我认为我会很聪明并尝试使用伪寄存器,但我不认为我很聪明足够因为我现在似乎无法组合这两个命令合二为一:
0:006> r? @$t2 = @@masm(@@c++(this->m_pSession->m_SessionContext._Mypair._Myval2._Bx._Buf))
0:006> .printf "%ma\n", @$t2
BlahBlahBlah
好吧,这实际上是一个谎言——如果我这样做,我可以在一个命令中得到它:
r? @$t2 = @@masm(@@c++(this->m_pSession->m_SessionContext._Mypair._Myval2._Bx._Buf));.printf "%ma\n", @$t2
但这并不是我真正的目标......这是一个花言巧语,任何指针都非常感谢。
【问题讨论】: