KDE 桌面环境

12.4. 共享库和断点

共享库和断点有一个可以得到合理解决的问题.这个问题是:gdb不会接受一个没有打开 的共享库中的断点,虽然该共享库即将会用dlopen打开.

解决办法是让gdb告诉我们一个共享库什么时候被打开的.我们通过设置"stop-on 1"来 实现.这意味着,当用户设置一个断点的时候,我们把该断点标记为挂起,如果gdb告知中断 成功则标记为活跃,否则保持其挂起状态.下一行代码将被"继续".

这就是"懒断点"

然而,当你使用"单步跳过"命令并且单步跳过的那行会载入库时可能会导致问题发生. 这会在载入库时引发中断.并且,一般调试器会"继续"(即运行到下一个断点或代码结 束).可以用户希望程序停在下一行,所以在这个位置上,我们并不继续,而是让它留在 那里(其中的某处会有一个dlopen命令).这不太和谐,但是没有更好的办法了.