2

我知道插入普通断点可以稍微改变编译的代码,但数据断点也是如此吗?我看不出它们如何在逻辑上与代码“内联”。

4

2 回答 2

4

据我所知,断点并没有改变编译的代码,普通的断点或数据断点都没有。

该程序正在使用编译器进行编译,然后调试器使用已编译的可执行文件运行。

被更改的代码是内存中的代码。调试器将可执行文件加载到内存并在那里更改代码。

于 2012-10-01T16:41:23.377 回答
1

如果您指的是“变量监视”或“内存断点”,您要求调试器在变量或内存区域发生更改时中断,那么这是通过要求您的 CPU 监视该内存地址来实现的/所有写访问的范围,并闯入调试器以让它决定是否中断每次写入。(我不知道 CPU/调试器是如何实现这一点的,只是它确实做到了)。

这不会修改内存的内容或内存中的可执行代码。

于 2012-10-01T17:05:34.393 回答