1 #!/bin/sh 2 3 # 4 # Copyright (c) 2002, 2014 Oracle and/or its affiliates. All rights reserved. 5 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 6 # 7 # This code is free software; you can redistribute it and/or modify it 8 # under the terms of the GNU General Public License version 2 only, as 9 # published by the Free Software Foundation. 10 # 11 # This code is distributed in the hope that it will be useful, but WITHOUT 12 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 # FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 # version 2 for more details (a copy is included in the LICENSE file that 15 # accompanied this code). 16 # 17 # You should have received a copy of the GNU General Public License version 18 # 2 along with this work; if not, write to the Free Software Foundation, 19 # Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 # 21 # Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 # or visit www.oracle.com if you need additional information or have any 23 # questions. 24 # 25 26 # 27 # @test 28 # @bug 4690242 4695338 29 # @summary TTY: jdb throws NullPointerException when printing local variables 30 # @author Tim Bell 31 # 32 # @run shell NullLocalVariable.sh 33 # 34 classname=badscope 35 36 createJavaFile() 37 { 38 cat <<EOF > $classname.java.1 39 public class badscope { 40 public static final void main(String args[]) { 41 try { 42 System.out.println("hi!"); // @1 breakpoint 43 } catch (Exception e) { 44 e.printStackTrace(); 45 } finally { 46 System.out.println("done"); 47 } 48 } 49 } 50 EOF 51 } 52 53 # This is called to feed cmds to jdb. 54 dojdbCmds() 55 { 56 #set -x 57 cmd stop at badscope:4 ; $sleepcmd 58 runToBkpt ; $sleepcmd 59 cmd next ; $sleepcmd 60 cmd next ; $sleepcmd 61 cmd locals ; $sleepcmd 62 cmd allowExit cont 63 } 64 65 mysetup() 66 { 67 compileOptions=-g 68 if [ -z "$TESTSRC" ] ; then 69 TESTSRC=. 70 fi 71 72 for ii in . $TESTSRC $TESTSRC/.. ; do 73 if [ -r "$ii/ShellScaffold.sh" ] ; then 74 . $ii/ShellScaffold.sh 75 break 76 fi 77 done 78 } 79 # You could replace this next line with the contents 80 # of ShellScaffold.sh and this script will run just the same. 81 mysetup 82 83 runit 84 jdbFailIfPresent "Internal exception" 50 85 pass