1.什么是初始断点?
当调试进程的时候,为了让调试人员尽早的分析目标调试程序,windows操作系统的进程加载器加入了特别的调试支持:
在完成最基本的用户态初始化之后,系统的初始化函数就会主动执行断点指令,触发断点,让调试目标中断到调试器中。
这个断点被称为初始断点。
2.Windbg初始断点触发

为了给我们提供更好的调试机会,所以windbug在调试的时候首先会触发初始断点。

file=>Open Executeable

windbg 初始断点_初始化


此时触发了INT 3断点,我们可以查看模块加载信息,和调用堆栈,预设断点等操作。然后执行g命令,运行程序。

windbg 初始断点_windbg_02


此时断点已经触发。

3.如果32位程序在64位机器上运行会怎么样?

windbg 初始断点_加载_03


依然会产生中断3,但是child-sp = 0x00000000,程序模块并没有完全加载。此时执行g

windbg 初始断点_初始断点_04


发现windbg进行了wow切换,然后才进入初始断点。

所以32位程序在64位程序上运行加载的时候需要进行一步wow切换。