我正在深入研究MS Internet Explorer11和mshtml.dll,让我们快速而明确地说:我正在研究Windows8.1中"mshtml.dll“的"CTitleElement”类,我想在"CTitleElement“类中的一些函数上设置断点,看看这个类内部发生了什么(例如:创建标题元素,获取标题,设置标题,获取标题长度,等等)
我使用windbg附加IE进程,下面是我设置断点的方法:
0:013> bp MSHTML!CTitleElement::GetTitle
0:013> bp MSHTML!CTitleElement::SetTitle
0:013> bp MSHTML!CTitleElement::s_StringTable
0:013> bp MSHTML!CTitleElement::CreateElement
0:013> bp MSHTML!CTitleElement::TitleLength然后用"g“命令进入IE &打开下面这个简单的html文件:
<html>
<title>Hello There!</title>
</html>但不幸的是,我没有得到理想的结果,调试器没有命中断点。正如我注意到的,这是一种不稳定的情况,因为:“有时它会被击中,有时却没有!”
我想到了ASLR和我刚才设置的断点类型("bp"),通过安装EMET和禁用所有内存保护来禁用ASLR,但我仍然无法以可靠的方式获得结果。
有什么解决这个问题的建议吗?
致以问候。
发布于 2014-08-09 17:13:07
我只是在推测发生了什么事。也许当你第一次在IE中加载页面时,它会完全渲染它。下一次,页面可能不会完全呈现,因为使用了上一次运行的结果,并且执行的其他代码路径没有命中断点。
你有没有尝试强制刷新Ctrl+F5?
https://stackoverflow.com/questions/25138040
复制相似问题