可以使用线程分析器、性能分析器或 er_print 实用程序检查死锁检测实验。线程分析器和性能分析器都提供 GUI 界面;线程分析器显示的是一组简化的缺省视图,但在其他方面与性能分析器完全相同。
要启动线程分析器并打开 din_philo.1.er 实验,请键入以下命令:
% tha din_philo.1.er
线程分析器在左侧具有菜单栏、工具栏和垂直导航栏,因而您可以选择数据视图。
打开收集的死锁检测实验时,缺省情况下显示以下数据视图:
"Overview"(概述)屏幕显示已装入实验的度量概述。
"Deadlocks"(死锁)视图会显示线程分析器在程序中检测到的潜在死锁和实际死锁列表。缺省情况下选择此视图。其中会显示每个死锁涉及到的线程。这些线程形成一个循环链,其中每个线程都持有一个锁并请求该链中的下一个线程持有的另一个锁。
选择死锁后,右侧面板中的 "Deadlock Details"(死锁详细信息)窗口会显示有关涉及的线程的详细信息。
"Dual Source"(双源)视图会显示该线程持有锁的源代码位置,以及同一线程请求锁的源代码位置。该线程持有锁和请求锁的源代码行会突出显示。要显示此视图,请在 "Deadlocks"(死锁)视图上选择循环链中的线程,然后单击 "Dual Source"(双源)视图。
"Experiments"(实验)视图显示实验中的装入对象并列出所有错误和警告消息。
可以选择使用 "More Views"(更多视图)选项菜单查看其他视图。
er_print 实用程序提供命令行界面。可以在交互式会话中使用 er_print 实用程序并在该会话期间指定子命令。也可以使用命令行选项以非交互方式指定子命令。
使用 er_print 实用程序检查死锁时,以下子命令非常有用:
–deadlocks
该选项会报告实验中检测到的所有潜在死锁和实际死锁。在 (er_print) 提示符下指定 –deadlocks,或者在 er_print 命令行上指定 deadlocks。
–ddetail deadlock-ID
该选项会返回具有指定 deadlock-ID 的死锁的详细信息。在 (er_print) 提示符下指定 –ddetail,或者在 er_print 命令行上指定 ddetail。如果指定的 deadlock-ID 为 all,将显示所有死锁的详细信息。否则,请指定单个死锁编号,例如为第一个死锁指定 1。
–header
该选项会显示有关实验的描述性信息并报告所有错误或警告。在 (er_print) 提示符下指定 header,或者在命令行上指定 –header。
有关更多信息,请参阅 collect(1)、tha(1)、analyzer(1) 和 er_print(1) 手册页。