I wanted to take a look at the JDK source code in debug mode a few days ago, but when I entered debug mode, I discovered that I couldn’t see the variable values in the method at all. why? In the current version of the JDK, the debugging information is removed after compilation. The solution is to compile those classes with debugging information and use the command: javac -g
After checking some relevant information, I will put the solution below
Create the jdk7_src and jdk_debug directories in the root directory of d:\.
Find the src.zip file in the JDK_HOME directory, and extract the files inside it to the jdk7_src directory Download, and then delete other directories except java, javax, org in the decompressed directory.
Put rt.jar under JDK_HOME\jre\lib into your working directory, that is, the root directory of d:\ (This is just for the convenience of not having to specify a large number of file names on the command line).
Execute the commanddir /B /S /X jdk7_src\*.java > filelist.txt to create a list of java files that need to be compiled for the javac command Compiled input source file, dir command related parameter description, /B: does not output additional file information (no title information or summary), /S: displays the specified directory and all subdirectories Files in /X: are displayed as short names generated by non-8.3 file names. The format is /N format, with the short name inserted in front of the long name. If there is no short name, a blank is displayed in its place.
Executejavac -J-Xms16m -J-Xmx1024m -sourcepath d:\jdk7_src -cp d:\rt.jar -d d:\jdk_debug -g @filelist.txt >> log.txt 2>&1 The compiled file will be placed in the jdk_debug folder, and the log generated by the compilation will be saved in the log.txt file. You will see a lot of warnings in the log file, but no error messages.
Enter the jdk_debug directory and execute the command jar cf0 rt_debug.jar *, and package the compiled file into rt_debug.jarBag.
Put the newly generated jar package into JDK_HOME\jre\lib\endorsed (if there is no endorsed folder, create it manually).
Note: JDK_HOME represents the JDK installation path. All commands in this article are executed under d:\ and its subdirectories.
To be simpler, you can also put the rt_debug.jar of the debug version of JDK7 I provided below into the endorsed folder.
debug jdk source can't watch variable what it is --stackoverflow
Java Endorsed Standards Override Mechanism—java guides
rt_debug.jar download
The above is the detailed content of How to solve the problem that variable values cannot be viewed when debugging JDK source code?. For more information, please follow other related articles on the PHP Chinese website!