Windbg扩展步骤
WinDbg Extension stepping
我正在尝试编写一个扩展功能,该功能将运行到下一个呼叫,然后打印出有关下一个指令的信息。
我正在使用IDebugControl::Execute
运行tc
。如文档中指出的那样,此呼叫在跟踪实际发生之前返回。在我的扩展返回之前,睡觉或调用dispatchcallbacks看不到tc
跟踪发生。
如何允许跟踪发生而不从呼叫返回?
如果我添加了自己的DebugeVentCallback,那么我可以通知触发的debgeestate和Enginestate更改,但无法从这些回调中回到引擎。
我认为通过iDebugcontrol :: execute(g,t等)呼叫更改调试器状态不是一个好主意
首先,您应该实现步骤命令:
control->SetExecutionStatus(DEBUG_STATUS_STEP_OVER);
control->WaitForEvent(DEBUG_WAIT_DEFAULT, INFINITE);
然后,您可以制作一个匹配器以进行呼叫签名:
registers->GetInstructionOffset( &ip );
control->Disassemble( ip, ..., disasmStr, ..
return disasmStr
然后可以构建自己的TC:
while( CurrentInstruction() != 'call' ) makeOneStep()
您可以使用我们的python扩展名:pykd.codeplex.com
Python代码看起来像:
from pykd import disasm, step
while disasm().instruction.find('call') < 0:
step()
相关文章:
- 是否可以通过C++扩展强制多个python进程共享同一内存
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 扩展光电二极管探测器以支持多个传感器
- C++中的VLA,扩展名为std=C++11
- OpenGL 和 GLM 矩阵无法正确扩展,总是按比例缩小
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++返回 Numpy 数组的 Python 扩展模块
- 扩展可变参数模板中的变量名称
- 扩展C++生成的代码的模板参数类型名称
- 我想通过带有C++和Python的插件创建一个可扩展的应用程序
- VSCode IntelliSense无法识别SDL框架的SDL_image扩展库
- 将元组类型扩展为可变参数模板?
- 如何按文件扩展名引用文件夹中的文件
- HDF5Cpp 扩展复合数据集超板问题
- MSVC中的宏观扩展问题
- 嵌套参数包扩展失败
- Windbg扩展步骤
- WinDbg 扩展 C++ dprintf 在函数退出之前不显示
- 是否可以使用Visual Studio构建WinDBG扩展?