我已经安装了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)
...
这里的问题是该进程必须已经可用(否则我们将无法获取其上下文)。
也许有一种更简单的方法可以在breakpoint命令中声明进程名称,并且可以等待进程启动?
编辑:
发现,使用sxe ld myproc.exe
可以在进程加载时获取断点。.但是,在此阶段,并不是所有的库都已加载,因此无法在其方法上设置断点。在进程myproc.exe中加载库x.dll时,也许有一种方法可以引起更好的注意?
答案 0 :(得分:0)
将__debugbreak()
放入您的代码中。编译。复制到VM。运行带有调试器的exe。一旦您的代码达到__debugbreak
,它就会在windbg
中打扰您。