【问题标题】:Windbg, how to set method breakpoint on specific processWindbg,如何在特定进程上设置方法断点
【发布时间】:2019-08-04 03:03:27
【问题描述】:

我已经安装了带有VirtualKD 驱动程序的虚拟机,并连接到在主机上运行的windbg。

到目前为止,我已经设法通过以下方式切换到所需的进程上下文来在用户空间进程上设置断点:

# get procID      
!process 0 0 myproc.exe    

# use procID to switch context
.process /i <procID>

# continue till scheduler context switch to the desired process
g

# set break point on process' context (symbols should be visible)
...

这里的问题是进程必须已经可用(否则我们将无法获得它的上下文)。

也许有一种更简单的方法可以在断点命令中声明进程名称,并能够等待进程启动?

编辑:

发现使用sxe ld myproc.exe 我可以在进程加载时获得断点。但是,在这个阶段,并非所有库都已加载,因此我无法在他们的方法上设置断点。当库 x.dll 在进程 myproc.exe 中加载时,也许有一种方法可以更好地引起注意?

【问题讨论】:

  • 为什么要在内核模式下这样做?
  • 如果你有符号,你可以bu
  • @Neitsa,也许你可以给我一个使用示例,使用bu 在进程名称x.exe 尝试加载库y.dll 而进程x.exe 仍然不存在时触发断点。谢谢!

标签: windows debugging winapi windbg


【解决方案1】:

__debugbreak() 放入您的代码中。编译。复制到虚拟机。运行附加了调试器的 exe。一旦你的代码点击__debugbreak,它就会在windbg 中破坏你。

【讨论】:

  • 如果您正在调试自己的二进制文件,这是一个很好的方法,但是如果您想调试 winword.exe 会发生什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-01
  • 1970-01-01
  • 2012-11-28
相关资源
最近更新 更多