A new approach to debugging optimized code
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Debugging optimized code with dynamic deoptimization
PLDI '92 Proceedings of the ACM SIGPLAN 1992 conference on Programming language design and implementation
Debugging optimized code without being misled
ACM Transactions on Programming Languages and Systems (TOPLAS)
Safe and efficient sharing of persistent objects in Thor
SIGMOD '96 Proceedings of the 1996 ACM SIGMOD international conference on Management of data
An orthogonally persistent Java
ACM SIGMOD Record
An approach for exploring code improving transformations
ACM Transactions on Programming Languages and Systems (TOPLAS)
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Cache-conscious structure definition
Proceedings of the ACM SIGPLAN 1999 conference on Programming language design and implementation
Symbolic Debugging of Optimized Code
ACM Transactions on Programming Languages and Systems (TOPLAS)
Symbolic execution and program testing
Communications of the ACM
Language-specific make technology for the Java programming language
OOPSLA '02 Proceedings of the 17th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
J-Orchestra: Automatic Java Application Partitioning
ECOOP '02 Proceedings of the 16th European Conference on Object-Oriented Programming
Implementing Orthogonally Persistent Java
POS-9 Revised Papers from the 9th International Workshop on Persistent Object Systems
A systematic approach to advanced debugging through incremental compilation (Preliminary Draft)
SIGSOFT '83 Proceedings of the ACM SIGSOFT/SIGPLAN software engineering symposium on High-level debugging
A Technique for Dynamic Updating of Java Software
ICSM '02 Proceedings of the International Conference on Software Maintenance (ICSM'02)
Debugging programs after structure-changing transformation
Debugging programs after structure-changing transformation
Incremental execution of transformation specifications
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Debugging Support for Aspect-Oriented Program Based on Program Slicing and Call Graph
ICSM '04 Proceedings of the 20th IEEE International Conference on Software Maintenance
Hibernate in Action (In Action series)
Hibernate in Action (In Action series)
A Differencing Algorithm for Object-Oriented Programs
Proceedings of the 19th IEEE international conference on Automated software engineering
Binary refactoring: improving code behind the scenes
Proceedings of the 27th international conference on Software engineering
Selective capture and replay of program executions
WODA '05 Proceedings of the third international workshop on Dynamic analysis
Tdb: a source-level debugger for dynamically translated programs
Proceedings of the sixth international symposium on Automated analysis-driven debugging
JunGL: a scripting language for refactoring
Proceedings of the 28th international conference on Software engineering
Queue - Component Technologies
A framework for implementing pluggable type systems
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Dynamic Updating of Software Systems Based on Aspects
ICSM '06 Proceedings of the 22nd IEEE International Conference on Software Maintenance
Reflective program generation with patterns
Proceedings of the 5th international conference on Generative programming and component engineering
Automatic Inference of Structural Changes for Matching across Program Versions
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Blended analysis for performance understanding of framework-based applications
Proceedings of the 2007 international symposium on Software testing and analysis
Extending omniscient debugging to support aspect-oriented programming
Proceedings of the 2008 ACM symposium on Applied computing
Towards easing the diagnosis of bugs in OS code
Proceedings of the 4th workshop on Programming languages and operating systems
Annotation refactoring: inferring upgrade transformations for legacy applications
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Debugging aspect-enabled programs
SC'07 Proceedings of the 6th international conference on Software composition
Framework-Specific modeling languages with round-trip engineering
MoDELS'06 Proceedings of the 9th international conference on Model Driven Engineering Languages and Systems
The anti-goldilocks debugger: helping the average bear debug transparently transformed programs
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
FlowChecker: Detecting Bugs in MPI Libraries via Message Flow Checking
Proceedings of the 2010 ACM/IEEE International Conference for High Performance Computing, Networking, Storage and Analysis
Exposing behavioral differences in cross-language API mapping relations
FASE'13 Proceedings of the 16th international conference on Fundamental Approaches to Software Engineering
Hi-index | 0.00 |
Programs written in managed languages are compiled to a platform-independent intermediate representation, such as Java bytecode. The relative high level of Java bytecode has engendered a widespread practice of changing the bytecode directly, without modifying the maintained version of the source code. This practice, called bytecode engineering or enhancement, has become indispensable in introducing various concerns, including persistence, distribution, and security, transparently. For example, transparent persistence architectures help avoid the entanglement of business and persistence logic in the source code by changing the bytecode directly to synchronize objects with stable storage. With functionality added directly at the bytecode level, the source code reflects only partial semantics of the program. Specifically, the programmer can neither ascertain the program's runtime behavior by browsing its source code, nor map the runtime behavior back to the original source code. This paper presents an approach that improves the utility of source-level programming tools by providing enhancement specifications written in a domain-specific language. By interpreting the specifications, a source-level programming tool can gain an awareness of the bytecode enhancements and improve its precision and usability. We demonstrate the applicability of our approach by making a source code editor and a symbolic debugger enhancements-aware.