考慮下面的代碼片斷使用ASM以檢測可能的同步死鎖
synchronized (A.class) {
foo();
synchronized (B.class) {
bar();
}
}
而且其中A和B被交換另一個代碼。這可能會導致死鎖,我試圖用ASM來檢測這個(特別是,我只檢測A,B是否是我知道不應該同步的類,例如Exceptions)。目前,我有一個使用SimpleVerifier的分析器。使用這個,我可以在堆棧頂部獲得BasicValue並獲取它的Type,但在代碼示例中,內部名稱將是java/lang/Class,它不會告訴我它是哪個類。我似乎無法找到一種簡單的方法來查找類所代表的類。任何幫助是極大的讚賞。謝謝!
你在看靜態還是動態分析? – Jochen