【发布时间】:2014-03-29 06:58:18
【问题描述】:
我知道可执行文件中的software breakpoints 可以通过将所需位置的一些汇编指令替换为另一条指令来工作,这会导致中断。所以调试器可以在这个地方完全停止执行,并用原来的指令替换这个指令,并询问用户下一步要做什么或调用一些命令等。
但是这样的可执行文件的代码不被其他程序使用,并且在内存中只有一个副本。 软件断点如何与共享库一起工作?例如,如果我在 C 库的某些内部函数中设置一个软件断点(据我了解,它对于所有应用程序只有一个副本,所以我们不能只替换其中的一些指令)?有没有为此目的的“软件断点”技术?
【问题讨论】:
标签: debugging gdb shared-libraries breakpoints internals