gpt4 book ai didi

c++ - 断点如何在 C++ 代码中工作?

转载 作者:IT老高 更新时间:2023-10-28 12:32:17 33 4
gpt4 key购买 nike

断点如何在 C++ 代码中工作?编译代码时是否在某些汇编指令之间插入了特殊指令?还是有其他的地方?另外,单步执行代码是如何实现的?和断点一样...?

最佳答案

这在很大程度上取决于 CPU 和调试器。

例如,x86 CPU 上的一种可能解决方案:

  • 在需要的地方插入一个字节的 INT3 指令
  • 等到断点异常发生
  • 将异常地址与断点列表进行比较,以确定是哪一个
  • 执行断点操作
  • 用原始字节替换INT3,将被调试的进程切换到跟踪模式(CPU指令的逐步执行)
  • 继续调试过程
  • 您立即捕获跟踪异常 - 指令已执行
  • 放回 INT3

Watchpoints 可以以类似的方式实现,但不是 INT3,而是将监视变量所在的内存页面设置为只读或无访问模式,并等待分段异常。

也可以通过使用跟踪模式来完成程序集的单步调试。根据调试数据,也可以通过在下一条指令上放置断点来单步执行源代码行。

当您将地址加载到某个寄存器时,一些 CPU 也支持硬件断点。

关于c++ - 断点如何在 C++ 代码中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3915511/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com