使用带有 –r deadlock 选项的 collect 命令。此选项将在程序的执行期间创建死锁检测实验。
对于本教程,请使用以下命令创建名为 din_philo.1.er 的死锁检测实验:
% collect -r deadlock -o din_philo.1.er din_philo
collect 命令接受以下选项,创建死锁检测实验时这些选项非常有用:
如果检测到不可修复的错误,将终止程序。
如果检测到不可修复的错误,则终止带有信息转储的程序。
如果检测到不可修复的错误,将允许程序继续。
缺省行为是 terminate。
可以将前面的任何选项与 collect 命令配合使用来得到您需要的行为。例如,要在发生实际死锁时导致程序终止并具有信息转储,请使用以下 collect 命令。
% collect -r deadlock,abort -o din_philo.1.er din_philo
要在发生实际死锁时导致程序挂起,请使用以下 collect 命令:
% collect -r deadlock,continue -o din_philo.1.er din_philo
可以通过创建多个死锁检测实验来提高检测到死锁的可能性。对于各个实验,应使用不同的线程数和不同的输入数据。例如,在 din_philo.c 代码中,可以更改以下行中的值:
13 #define PHILOS 5 14 #define DELAY 5000 15 #define FOOD 100
然后可以像以前一样进行编译,并收集其他实验。
有关更多信息,请参见 collect(1) 和 collector(1) 手册页。