Hello everyone, Last year I've worked as a gsoc student in Harmony and learned a lot during the project. I'm eager to participate gsoc 2010 and looking forward to working in Harmony as well :)
I've submit my proposal to the gsoc project website. For your convenience, I'd like to post it here and discuss it with you. I've skimmed through the document of JPDA and I'm currently read some jdwp source code to get familiar with the logging system. ===================================================================== *Student Name:* Linghui Gong *Student E-mail:* daniel.gong.fu...@gmail.com *Student Major:* Computer Science *Student Degree:* Studying for Master of Science Degree, 2nd year *Organization/Project:* Harmony Project, The Apache Software Foundation *Assigned Mentor:* Sean Qiu *Proposal Abstract:* The aim of the project is trying to enhance harmony's jdwp log system to facilitate jdwp debugging by adding support of thread information and implementing a log analyzer to sort log messages according to user demands and find out bug-prone message. *Detailed Description:* Harmony current JDWP agent have full logging functionality. But all log messages are messed up regardless of its running thread information. On the other hand, Harmony JDWP support a lot of types log level, user need to rerun the appilcation to get different type of log. It would be much convenient if we have a log analyzer to help sort out log messages, then we can only need get the all log message. This project should include the following steps: 1. Modify the jdwp agent code to support thread information in the log. 2. Implement a log analyzer that can sort out different kind of log messages according to user demands. 3. Improve the log analyzer to make it enable to analyze the log message sequence with context and find out bug-prone log message. I've read part of the jdwp source code and I believe the first two steps are not difficult to implement. The last step is a challenging one. In my understanding, some messages may be judged as bug-prone one only with information from itself and others may need context to decide, which indicates that sequence analysis should be included in the analyzer. Methods such as rule-based classification or heuristic pattern recognition can be employed to accomplish the task. In my experience, I've used CRF(Conditional Random Fields) to analyze sentences and tag words and phrases. It works well. However, currently I'm not very sure that this is the best choice for this project. Several literature I've read claimed that rule-based classification costs less but is more adjustable and gives decent result. I need to do more investigating. *Draft Timeline* - Week 1 Read and understand the JDWP logging related code; - Week 2 Read and get familiar with the JDWP and JVMTI document; - Week 3-4 Complete the thread information support; - Week 5-6 Implement the log analyzer initial version with log sorting functionality; - Week 7-10 Add the bug-prone message judgement functionality to the analyzer; - Week 11 Fix all bugs left and complete the documentian work. *Available Time* - Generally, I have 14~16 hours per week in average guaranteed working on the subject. - I'm a 2nd year graduate student and do not have any classes or exams to attend, which allow me to have enough time to complete the project. *Additional Information:* I've been learning and using Java since 4 years ago. In the past I've complete several projects based on java, including a mini library management system, a text stream clustering system, a search engine project based on Apache Lucene. I've got rich experience of Java language, programming and debugging from them. Last year I've participated in Google Summer of Code and successfully accomplished the harmony-classes-selector project of Harmony under the mentoring of Regis. In the project, I came across JVMTI in the first time and built an agent for the project. As a result, I became very interested in Java runtime technology and I've learned and got to know more knowledge in this area including Java class file format, instrumentation, JPDA and so on. I believe these professional knowledge and my other knowledge in programming and software architecture can help me to learn fast and handle the problem. I'm 24 years old, living in Shanghai, China, studying in Fudan University. ===================================================================== Thanks for your attention! Best wishes Daniel Gong