Windbg 将两个命令(MASM 和 C++)合二为一
Windbg combining two commands (MASM and C++) into one
如果我应该知道这一点,我很抱歉,但我知道其他人会立即知道是否可能(我认为是(,然后我可以知道未来。但是是否可以将这两个命令合并为一个?
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 "%man", @$t2
BlahBlahBlah
好吧,这实际上是一个谎言 - 如果我这样做,我可以在一个命令中获取它:
r? @$t2 = @@masm(@@c++(this->m_pSession->m_SessionContext._Mypair._Myval2._Bx._Buf));.printf "%man", @$t2
但这不是我真正的目标...这是一个小问题,任何指针都非常感谢。
我不知道为什么要使用可变策略
我希望你理解std::string和sso(短字符串优化(的实现我希望
你明白任何超过阈值的字符串都不能用_Buf
打印,而是需要通过其_Ptr打印
为什么不只使用 C++ 或使用便利函数
尝试以下一些表达式,看看它是否满足需求
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 ?
相关文章:
- 在 masm x64 上打印具有多个参数
- Windbg 将两个命令(MASM 和 C++)合二为一
- 在 MASM 中调用标准库函数
- 错误 A2022 和MSB3721在我尝试运行 C++/MASM 程序时出现
- Howo 使用 cl 预处理为 masm 组装生成一个单独的文件
- 用MASM编译汇编文件时,缺少表达式操作员
- 在X64模式下从C /CLI调用MASM PROC会产生意外的性能问题
- X86 MASM-通过并访问2D阵列
- 为 c++ 程序编写 MASM 函数
- 在MASM中调用C++函数
- 将内联GASM移植到x64 MASM访问冲突问题
- 检索x64 masm程序集过程的参数
- MASM 局部变量:动态分配的数据
- Masm DLL 过程在 for 循环中
- MASM 使用 VS 击败未优化的 .cpp 但不是未优化的 .c
- MASM修复DLL中的64位截断
- 使用交换方法x86 MASM反转程序集中的外部阵列
- 调用在MASM中创建的库到C或c++
- 如何将MASM数组传递给c++函数