]> source.dussan.org Git - aspectj.git/commitdiff
377906 debug
authorAndy Clement <andrew.clement@gmail.com>
Mon, 28 Jan 2013 21:50:12 +0000 (13:50 -0800)
committerAndy Clement <andrew.clement@gmail.com>
Mon, 28 Jan 2013 21:50:12 +0000 (13:50 -0800)
org.aspectj.ajdt.core/src/org/aspectj/ajdt/internal/core/builder/AjState.java

index e545814e9e1e7ffcefd5db015a09f15dda624aa2..6cf7d2712e3946720879f85127cddb3fd488f05d 100644 (file)
@@ -13,7 +13,9 @@
 
 package org.aspectj.ajdt.internal.core.builder;
 
+import java.io.DataOutputStream;
 import java.io.File;
+import java.io.FileOutputStream;
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.lang.ref.ReferenceQueue;
@@ -1497,6 +1499,22 @@ public class AjState implements CompilerConfigurationChangeFlags, TypeDelegateRe
                                this.resolvedTypeStructuresFromLastBuild.put(thisTime.getClassName(), new CompactTypeStructureRepresentation(
                                                reader, isAspect));
                        } catch (ClassFormatException cfe) {
+                               try {
+                                       String s = System.getProperty("aspectj.debug377906","false");
+                                       if (s.equalsIgnoreCase("true")) {
+                                               String location = System.getProperty("java.io.tmpdir","/tmp");
+                                               String name = thisTime.getClassName();
+                                               File f = File.createTempFile(location+File.separator+name, ".class");
+                                               StringBuilder debug = new StringBuilder();
+                                               debug.append("Debug377906: Dumping class called "+name+" to "+f.getName()+" size:"+thisTime.getBytes().length);
+                                               DataOutputStream dos = new DataOutputStream(new FileOutputStream(f));
+                                               dos.write(thisTime.getBytes());
+                                               dos.close();
+                                               throw new BCException(debug.toString(), cfe);
+                                       }
+                               } catch (Exception e) {
+                                       e.printStackTrace();
+                               }
                                throw new BCException("Unexpected problem processing class", cfe);
                        }
                }