Debugging my code with Java's jdb. Am stuck at a point where my program expects command-line input, but jdb intercepts it as a jdb command.
How do I tell jdb to pass through text to the running program?
Version:
C:\Documents and Settings\*snip*>java -showversion java version "1.6.0_17" Java(TM) SE Runtime Environment (build 1.6.0_17-b04) Java HotSpot(TM) Client VM (build 14.3-b01, mixed mode, sharing) Compile:
javac -g LZWDecompress.java jdb.ini:
stop in LZWDecompress.decompress run monitor list This is what happens:
Initializing jdb ... *** Reading commands from C:\Documents and Settings\*snip*\jdb.ini Deferring breakpoint LZWDecompress.decompress. It will be set after the class is loaded. > run LZWDecompress Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable > > > VM Started: Set deferred breakpoint LZWDecompress.decompress File to be decompressed: At the prompt above, I enter "test", and receive this response:
... VM Started: Set deferred breakpoint LZWDecompress.decompress File to be decompressed: test Unrecognized command: 'test'. Try help... > Here is the code from function main(...), written by our instructor, not me:
public static void main(String[] args) throws IOException { short [] source; int dlen; int sz; byte [] decompressed; BufferedReader br; DataInputStream In; FileInputStream FI; FileOutputStream FO; InputStreamReader isr; String cfnm; String sfnm; source = new short[INPUT_FILE_IO_BUFFER_SIZE]; decompressed = new byte[OUTPUT_FILE_IO_BUFFER_SIZE]; isr = new InputStreamReader(System.in); br = new BufferedReader(isr); System.out.print("File to be decompressed: "); System.out.flush(); sfnm = br.readLine(); System.out.print("Name of the decompressed file: "); System.out.flush(); cfnm = br.readLine(); FI = new FileInputStream(sfnm); In = new DataInputStream(FI); FO = new FileOutputStream(cfnm); for (sz=0; true; ++sz) { try { source[sz] = In.readShort(); } catch (EOFException e) { break; } catch (Exception e) { System.out.print(e.toString()); } } dlen = decompress(source, sz, decompressed); FO.write(decompressed, 0, dlen); FO.close(); } // end main()