IntelliJ IDEA 2020.1 EAP2: Improvements to the Debugger, the Profiler, and More

IntelliJ IDEA 2020.1 EAP was updated today. The new EAP build adds improvements to the debugger and the profiler, and it introduces a new Commit toolwindow along with the LightEdit mode. Keep reading to learn all about these exciting changes.

Debugger

Dataflow analysis assistance

IntelliJ IDEA v2020.1 adds dataflow analysis assistance to the debugger, which predicts and shows you possible exceptions and always true/always false conditions based on the current state of the program execution.

When you debug Java code and reach a breakpoint, the IDE runs the dataflow analysis based on the current state of the program and shows you what will happen next, before the code execution reaches that point:


You can read all the details about this new feature in Integrating Java Dataflow Analysis and the Debugger.

Pin to top

Another small but helpful improvement is the ability to pin any of an object’s fields to the top of its fields list. This can come in handy when the object has so many fields that it becomes difficult to find the ones you need to investigate:

We’ve added another minor debugger improvement that allows you to connect to a debugging session from a remote machine through IPv6.

Profiler

Focus on method calls

Now when you analyze your application’s performance with the CPU profiler, you can use a number of additional options to focus more specifically on a chosen method call and filter out the unnecessary ones:

  • Focus on Subtree shows the selected method call and all the following calls in the subtree. When this is selected, the parent time-sample counter displays the overall time spent in the selected subtree.
  • Focus on Call shows the selected method and the methods that call it. When this is selected, every time frame shows only the time spent in the selected method.
  • Exclude Subtree ignores the selected method call and all the following calls in the subtree.
  • Exclude Call excludes the selected method and all calls to it.

Visit the Profiling tools section to learn how to install and use this feature to analyze applications in IntelliJ IDEA Ultimate.

Collapse recursive calls

IntelliJ IDEA now detects recursive calls when the same method is called higher up in the stack. The IDE now encourages you to take these calls out of the subtree, allowing you to bypass recursion and focus on the methods that consume most of the resources and on the calls that they make.

Recursive calls are indicated with this new special icon in the Call Tree tab:

Analyze HProf memory snapshots

IntelliJ IDEA 2020.1 enables you to open .hprof memory dump files without taking up too much of your RAM.

To open the .hprof file, go to Help | Find action and type “hprof” to find the Open Hprof Snapshot action:

Once you have chosen the .hprof file, the IDE will open it in the Profiler tool window:

A number of tabs appear in the picture above. Here’s what they do:

  • Summary shows common information like the total size, number of instances and stack traces of the file.
  • GC Roots shows all the root objects grouped by classes.
  • Classes lists all classes sorted by their numbers of instances or size.
  • Object view (double-click on an object) lists all the class instances with the field value viewer.

Note that in v2020.1 we are working on the very first version of this new feature. More sophisticated analysis should become available in the next major versions. As usual, we’re excited to see your feedback and suggestions in the comments.

Other improvements

New Commit tool window

We have been working on the new commit tool window for quite some time. In the previous EAP series, we tested several approaches to the Commit UI. Now in 2020.1 we’ve come up with a new tool window for the task. Here is what it looks like:

The new commit tool window incorporates the Local Changes and Shelf tabs. This tool window covers all commit-related tasks, like checking diffs, selecting files and chunks to commit, and entering a commit message. Commit is a vertical tool window located on the left, which leaves room for the entire editor to show the diff.

We are still working to improve the new tool window, and your suggestions and general feedback are very welcome in the comments!

LightEdit Mode

The new LightEdit Mode allows you to open files in a simple editor window without creating or loading a project. It’s been developed in response to a frequent request to use IntelliJ IDEA as a general-purpose text editor [IDEA-62898].

The easiest way to try LightEdit mode is to open a file from the command line by executing “idea file” where file refers to a file that exists in the local file system:

For more information on how to create a command line launcher, see Opening files from command line.

You can also use the Open action from the IntelliJ IDEA’s welcome screen or Open with…| IntelliJ IDEA from your OS’s system file manager.

Though the LightEdit Mode doesn’t provide the full set of the IDE features, it starts and works considerably faster. LightEdit mode is convenient for quick changes in arbitrary local text, source, and configuration files. This feature is in an early stage of development, and we are planning to implement gradual improvements and fixes over the coming EAP builds.

Preview intentions

You can now preview intentions before you apply them to your code. After pressing Alt+Enter to choose an available intention action, you now can also press Alt+Space to see a preview:

Zen Mode

The new Zen Mode has been added to get rid of possible distractions and to help you focus completely on your code. In its essence, this new mode combines the Distraction Free Mode and the Full Screen Mode, so that you don’t have to enable or disable both of these modes every time you want to enter or exit them.

Just like with any other editor mode, to enable the Zen Mode, go to View | Appearance | Enter Zen Mode, or choose it from the Quick Switch Scheme popup (Ctrl+` | View mode | Enter Zen Mode).

Check out the full release notes for the exact list of closed tickets.

That’s it for now! We’ll keep publishing the EAP builds for v2020.1 with more fixes and improvements each week. Stay tuned!

And Happy Developing!

This entry was posted in EAP Releases and tagged , . Bookmark the permalink.

19 Responses to IntelliJ IDEA 2020.1 EAP2: Improvements to the Debugger, the Profiler, and More

  1. Mark Han says:

    Data flow analysis and the new Commit UI look incredible. Having more room to view diffs is always good. Is there a keymap to check/uncheck boxes in the commit staging left panel and the commit diff view? It would tremendously speed up my workflow if this is so.

    Zen Mode is great but can we be sure to test it more with multiple projects/IDEs open? There are a lot of hiccups with Distraction Free mode with multiple windows open on MacOS.

    • michel says:

      In the commit panel use the space bar to check/uncheck boxes.
      For checking/unchecking in the commit diff view you can use your own shortcut (define a keymap for “include lines into commit” in the keymap setting).

  2. Fabio says:

    I have a lot of problems with this EAP.
    All default javascript objects are not recognized (“window” for instance) and my IDE already crashed twice.

    • Olga Klisho says:

      Hello Fabio, please create an issue at the YouTrack (https://youtrack.jetbrains.com/issues/IDEA) attaching to it the idea.log file after the bug reproduction (Help | Show Log in Finder) and providing the description of steps to reproduce and a little code sample or sample project if possible. Thank you and sorry for inconvenience.

  3. Roman says:

    Zen mode is cool, but can we also get the line numbers there?

    • Artem Sarkisov says:

      Yes you can: Invoke Search Everywhere (Double Shift) or Find Action (Shift+Cmd+A / Ctrl+Shift+A) when in the Zen Mode, and look for “show line numbers”.

  4. Joe says:

    The separator between split editors is nearly impossible to see in the EAP. You can’t tell where one editor ends and another starts. Please revert that UI change.

  5. Mike B. says:

    Regarding the new commit tool window, unfortunately the new UI layout works fine only if you have a really wide screen, otherwise the key UI part of the commit tool — a code diff will look as two narrow blocks where most of the space will be occupied by paddings — either tabs or spaces.

    Further discussion:
    https://youtrack.jetbrains.com/issue/IDEA-231847

  6. Ulrich says:

    I don’t understand why there are so many experiments with the commit dialog. It get’s worth each time. To me the last iteration, where commit and VSC history are combined worked okay. What bothers me most are two points: Alt-9 opens the commit dialog and I have found no shortcut that opens Git log view. The other thing is the position of the new commit dialog. Why can’t I resize or reposition it?

    • Artem Sarkisov says:

      You should be able both resize and reposition the commit dialog from the context menu (Right click | Move to…). Does that not work for you?

      As for the shortcut for the Git log view, you may find the new one and reassign it in Settings | Keymap.

    • Carsten Otto says:

      I also noticed that Alt+9 doesn’t show me the git log. As far as I know, we have Ctrl+K to open the commit dialog. What about using Alt+9 to show the git log, and Ctrl+K to show the new commit dialog?

  7. Dmitry Kandalov says:

    Zen mode needs an option to hide all warnings (or even errors).
    At the very least there should be shortcuts to change highlighting level.
    Otherwise, it’s not zen at all with yellow and red popping up as soon as you type something.

  8. Tim says:

    For the Commit window, I’m mostly not unhappy with the old UI actually.
    What I do miss however, is a feature to keep the commit-window open when I do not commit all files.
    Not infrequently, I have some changes that I want to commit separately from others. Then I want to select the files / changes that I want to commit, commit them, then select other files to commit, commit them separately, repeat, then push.

    • Carsten Otto says:

      There’s an (old) issue about that, and I understand your problem. For me it helped to create changelists for those different commits. And, of course: commit early, commit often :)

  9. Too many tool tips says:

    The Javadoc tooltip appears when I hover over any part of my code. It is a bit annoying after some time. Is there a way to disable it.

  10. Carsten Otto says:

    I really like the static analysis feature in the debugger. Using this analysis you can identify certain unreachable lines, for example everything in an else block if the if condition is true. Could you remove/strike-through/darken/… the unreachable code, or maybe highlight the code that will be executed with certainty?

  11. Yosef says:

    Hi How to use LightEdit if the IDEA path always changing from build number to build number. I’m using Toolbox which automatically updates it.

Leave a Reply

Your email address will not be published. Required fields are marked *