[如果我[应该,我道歉,但我知道其他人会马上知道是否有可能(我认为是这样),然后我才能知道未来。但是有可能将这两个命令合而为一吗?
0:006> ? @@(this->m_pSession->m_SessionContext._Mypair._Myval2._Bx._Buf)
Evaluate expression: 1628841015336 = 0000017b`3e7d7828
0:006> ?? (char *) 0x0000017b3e7d7828
char * 0x0000017b`3e7d7828
"BlahBlahBlah"
我本身没有问题,可以按顺序运行它们,但是我认为我可以使用真正聪明的东西(例如括号之类的东西?)来将第一个包裹在第二个之中...但是,不管什么[[I尝试,我只会让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
嗯,这实际上是一个谎言-如果执行此操作,我can可以在一个命令
中得到它:
r? @$t2 = @@masm(@@c++(this->m_pSession->m_SessionContext._Mypair._Myval2._Bx._Buf));.printf "%ma\n", @$t2
0:000> ?? testA._Mypair._Myval2._Bx._Buf
char [16] 0x00000016`32b6f958
105 'i'
0:000> ?? (char *)testA._Mypair._Myval2._Bx._Buf
char * 0x00000016`32b6f958
"i'll be ssoed"
0:000> da @@c++(testA._Mypair._Myval2._Bx._Buf)
00000016`32b6f958 "i'll be ssoed"
0:000> da @@c++(testW._Mypair._Myval2._Bx._Buf)
00000016`32b6f938 "p.Wj&."
0:000> da @@c++(testW._Mypair._Myval2._Bx._Ptr)
00000126`6a579470 "H"
0:000> du @@c++(testW._Mypair._Myval2._Bx._Ptr)
00000126`6a579470 "Hello My Dear World Do You Recog"
00000126`6a5794b0 "nize my wide string ?"
如果愿意,也可以给它们起别名
0:000> as /ma mystr @@(testA._Mypair._Myval2._Bx._Buf)
0:000> al
Alias Value
------- -------
mystr i'll be ssoed
0:000> .echo ${mystr}
i'll be ssoed
0:000> as /mu mystr @@(testW._Mypair._Myval2._Bx._Ptr)
0:000> al
Alias Value
------- -------
mystr Hello My Dear World Do You Recognize my wide string ?
0:000> .echo ${mystr}
Hello My Dear World Do You Recognize my wide string ?