README.TXT

Important 
=========

The key "HKEY_LOCAL_MACHINE\Software\Microsoft\Java VM\Debug" must exist to
enable debugging under the Microsoft Java VM. You can create this key
programmatically. You will probably not want to run with this key except when
debugging since it disables the JIT compiler, and invokes a slower than normal
version of the bytecode interpreter loop. You can delete it using RegEdit.exe.
The debugger samples create this key themselves to enable debugging.

Files of special interest are preceded by "***".


Files
=====

Debugger\
Java debugger sample code.

JavaDbg.idl
An IDL description of the debugger interfaces.

*** ReadMe.txt
This file.

C++ Debugger\
Source files for Win32 C++ debugger sample console application
JDebug.exe.

GUIDs.cpp
GUIDs used by the C++ debugger sample.

*** JDebug.bat
Runs the C++ debugger sample on "Hello, world" applet.

*** JDebug.cpp
C++ debugger sample.

JDebug.ico
Sample icon.

JDebug.mak
MS Developer's studio makefile.

JDebug.rc
MS Developer's studio resource file.

Project.hpp
Common project header file.

RefCount.hpp
Simple COM reference counting class.

Resource.h
MS Developer's studio resource header file.

Release\
Built release C++ debugger sample binaries.

JDebug.exe
Release Win32 C++ debugger sample console application.

Hello\
Simple "Hello, world" sample Java debuggee applet.

Hello.bat
Runs Hello under JView.exe.

Hello.class
"Hello, world" Java class file.

Hello.java
"Hello, world" Java source file.

Java Debugger\
Source files for Java debugger sample application JavaDebugger.class.

*** JavaDebugger.java
Java debugger Java source.

DebuggeeProcess.java

DebuggeeProcess.class
JavaDebugger.class
Java debugger .class files.

JDbgHlpr.dll
Java debugger helper classes' native method implementations.

*** JDebug.bat
Runs the Java debugger sample on "Hello, world" applet.

com\ms\debug\

*.class
Java debugger interface and helper .class files.

Helpers\
Source code for Java debugger helper classes.

ConstantPoolHelper.java
EnumRemoteBooleanValueHelper.java
EnumRemoteDoubleValueHelper.java
EnumRemoteFloatValueHelper.java
LockBytesHelper.java
RemoteBooleanObjectHelper.java
RemoteDoubleObjectHelper.java
RemoteFloatObjectHelper.java
Java debugger helper Java source. Not all parameter types used
by the debugger interfaces can be automatically marshaled by
the current Java VM. These classes and their native methods
allow a Java debugger to use all the Java debugger interfaces
supported by the Java VM. The native methods of these classes
are implemented in jdbghlpr.dll. The need for at least some of
these classes will be removed in future releases of the Java VM.

JDbgHlpr\
MS Developer's Studio source project for JDbgHlpr.dll.

*.h
C header files describing Java class objects. Generated by
MSJavaH.

Helpers.cpp
Native methods for Java debugger interface helper classes.

JDbgHlpr.cpp
DLL entry point.

JDbgHlpr.def
Module definition file.

JDbgHlpr.mak
MS Developer's studio makefile.

JDbgHlpr.rc
MS Developer's studio resource file.

Process.cpp
Native methods for DebuggeeProcess.

Project.hpp
Common project header file.

Resource.h
MS Developer's studio resource header file.

Prototypes\
Method prototypes for Java debugger interfaces.

*.java
Java shorthand source files describing debugger interface
semantics for Java. These are not the actual Java files used
to generate the com\ms\debug .class files. Those .class files
contain additional COM marshaling information not present in
these Java source files. These Java source files are provided
to briefly describe the semantics of the debugger interfaces
under Java to developers.


Notes
=====

Java debugging functionality has been defined for the following areas, but not
implemented:

1) Passing a debug string from the debuggee to the debugger.
IRemoteProcessCallback::DebugStringEvent()

2) Thread groups.
IEnumRemoteThread
IEnumRemoteThreadGroup
IJavaEnumRemoteThread
IJavaEnumRemoteThreadGroup
IRemoteProcess::GetThreadGroups()
IRemoteProcessCallback::ThreadGroupCreateEvent()
IRemoteProcessCallback::ThreadGroupDestroyEvent()
IRemoteThread::GetThreadGroup()
IRemoteThreadGroup

3) Data breakpoints.
IRemoteObject::ClearBreakpoint()
IRemoteObject::SetBreakpoint()
Including ClearBreakpoint() and SetBreakpoint() of all interfaces
derived from IRemoteObject:
IRemoteArrayObject
IRemoteBooleanObject
IRemoteByteObject
IRemoteCharObject
IRemoteClassObject
IRemoteContainerObject
IRemoteDoubleObject
IRemoteFloatObject
IRemoteIntObject
IRemoteLongObject
IRemoteShortObject
IRemoteProcessCallback::DataBreakpointEvent()

Subsequent releases of the Microsoft Java VM may implement these features.


Copyright Microsoft Corporation 1996-1997.