|
|
1
10
Linux的答案是,Linux内核实现了COW(写时复制):如果共享库的代码被写入,内核会首先创建共享页面的私有副本,然后在内部重新映射虚拟内存 就为了这个过程 并允许应用程序继续。这对于userland应用程序是完全不可见的,并且完全在内核中完成。 因此,在第一次将软件断点放入共享库之前,它的代码实际上是 共享 ; 但是 之后 不此后,该进程使用一个脏的但私有的副本进行操作。 这种内核魔力使调试器不会导致其他应用程序突然停止。
然而,在VxWorks等操作系统上,这是不可能的。根据个人经验,当我为VxWorks实现GDB远程调试服务器时,我不得不禁止我的用户在
令人不快的结果是一场中断风暴,其中一个断点会导致中断,而在这个中断中会有另一个中断,而另一个和另一个在一个不可中断的链中,甚至对Ctrl-Z都有抵抗力。唯一的出路是关掉机器。 |