Oracle® Solaris Studio 12.4:线程分析器用户指南

退出打印视图

更新时间: 2014 年 12 月
 
 

创建死锁检测实验

使用带有 –r deadlock 选项的 collect 命令。此选项将在程序的执行期间创建死锁检测实验。

对于本教程,请使用以下命令创建名为 din_philo.1.er 的死锁检测实验:

% collect -r deadlock -o din_philo.1.er din_philo

collect 命令接受以下选项,创建死锁检测实验时这些选项非常有用:

terminate

如果检测到不可修复的错误,将终止程序。

abort

如果检测到不可修复的错误,则终止带有信息转储的程序。

–continue

如果检测到不可修复的错误,将允许程序继续。

缺省行为是 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) 手册页。