为什么断点对于 Visual Studio 的反汇编视图中没有源代码的行不起作用?
这是一个c ++项目:
7C92E4BE mov dword ptr [esp],eax
7C92E4C1 mov dword ptr [esp+4],0
7C92E4C9 mov dword ptr [esp+8],0
7C92E4D1 mov dword ptr [esp+10h],0
7C92E4D9 push esp
7C92E4DA call 7C92E508
7C92E4DF mov eax,dword ptr [esp]
7C92E4E2 mov esp,ebp
7C92E4E4 pop ebp
7C92E4E5 ret
7C92E4E6 lea esp,[esp]
7C92E4ED lea ecx,[ecx]
7C92E4F0 mov edx,esp
7C92E4F2 sysenter
7C92E4F4 ret
我在7C92E4F2
上设置bp(这部分由Win32调用,不是从我的代码中明确指出的),然后我开始调试,它不会停止。
为什么 ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您应该能够在 SYSENTER 上直接中断,但您将无法继续继续,因为 SYSENTER 是用户/内核模式转换发生的地方。您需要一个内核调试器来超越该点。正如我所说,不过,直接停在指令本身应该不会造成问题。
You should be able to break right on SYSENTER, but you won't be able to continue any further, since SYSENTER is where the user/kernel-mode transition takes place. You'd need a kernel debugger to step beyond that point. As I said, stopping right at the instruction itself shouldn't pose a problem, though.