Whole Tomato Software Forums
Whole Tomato Software Forums
Main Site | Profile | Register | Active Topics | Members | Search | FAQ
User name:
Password:
Save Password
Forgot your password?

 All Forums
 Visual Assist
 Technical Support
 2021.01.26 slow to GoTo UE4 plugin symbols
 New Topic  Reply to Topic
 Printer Friendly
Author Previous Topic Topic Next Topic  

tomob
New Member

Poland
6 Posts

Posted - Feb 19 2021 :  10:32:33 AM  Show Profile  Reply with Quote
Hi,

In the latest version of 2399 VAX takes multiple seconds to navigate to a symbol that is within a Unreal Engine plugin. The option to index plugin directories is enabled. This has never been the case before and to double check I have reverted to the previous version 2393 and there it works instantaneously. The problem does not exist outside of UE plugins and navigation (GoTo and it's variants) works as before.

This is makes VAX highly unusable for us as we have most of our code sitting in plugins.

feline
Whole Tomato Software

United Kingdom
17188 Posts

Posted - Feb 19 2021 :  12:02:39 PM  Show Profile  Reply with Quote
What sort of symbols are you seeing this problem with? Are they class names, function names, something else?

As a simple test I have added:

FPerformanceMonitorModule foo;

to a cpp file, using VS2019 and VA 2399.0. I am testing with:

VA Options -> Unreal Engine -> Index plugins (requires restart)

turned On, and have restarted, so that the plugins are indexed.

This is from the file:

C:\Program Files\Epic Games\UE_4.24\Engine\Plugins\Performance\PerformanceMonitor\Source\PerformanceMonitor\Private\PerformanceMonitor.h

selected at random. The class name is shown in italics by VA, which is what I would expect.

Alt-G on the class name is as fast as Alt-G on "FVector" or "ULightComponentBase"

Can you please try the same plugin type on your machine and see what results you get?

zen is the art of being at one with the two'ness
Go to Top of Page

tomob
New Member

Poland
6 Posts

Posted - Feb 23 2021 :  06:35:28 AM  Show Profile  Reply with Quote
I have tried the same module and I can repeat the behavior. For me navigating to any symbol inside PerformanceMonitor (it doesn't matter if it's a function, local variable, class field, etc.) takes few seconds per each GoTo invocation unless the symbol is from outside the plugin, e.g. FModuleManager. This behavior is consistent across all plugins I have tried and it never happens inside standard UE4 modules. So for example within SkeletalRenderGPUSkin.h the navigation is really responsive and I haven't noticed any slow downs.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17188 Posts

Posted - Feb 23 2021 :  1:13:23 PM  Show Profile  Reply with Quote
Do you have

VA Options -> Coloring and Attributes -> Show stable symbols in italics

turned On or Off? If this is turned Off can you please turn this On. Are symbols from the plugin directories being shown in italics or not? They should be, since they are part of the Unreal Engine code base.

Instead of using Alt-G to jump to a plugin symbol can you instead please try Alt-Shift-G, for the Goto Related dialog. Do you get the same delay here, or does the menu load promptly?

Assuming the dialog loads promptly, can you please open the Goto Member dialog. Again, does this load promptly, or do you get the same delay?

I am trying to work out if the problem is related to opening a file form a plugin directory, or if the problem is in locating information on these symbols from VA's symbol database.

zen is the art of being at one with the two'ness
Go to Top of Page

tomob
New Member

Poland
6 Posts

Posted - Feb 24 2021 :  05:14:10 AM  Show Profile  Reply with Quote
quote:
VA Options -> Coloring and Attributes -> Show stable symbols in italics

I assume you mean Show system symbols in italics, if so I have it turned on. None of the plugins symbols are shown in italics and I have never before seen them to be in previous VAX versions either. The only cases where I can see symbols in italics is if they're truly from outside the solution, e.g. WinApi. I have always assumed this worked correctly.

quote:
Instead of using Alt-G to jump to a plugin symbol can you instead please try Alt-Shift-G, for the Goto Related dialog. Do you get the same delay here, or does the menu load promptly?

Assuming the dialog loads promptly, can you please open the Goto Member dialog. Again, does this load promptly, or do you get the same delay?

You are right, Alt-Shift-G GoTo Related and the Go To Member dialog give me an immediate response. It's only the Alt-G GoTo that I get the delay for.

EDIT: One thing to note is that the GoTo delay is also within the same plugin file and not only when opening a new file, e.g. if I GoTo on a local variable it also takes few seconds to actually navigate to that local variable within the same file even if it's just one line up.


Edited by - tomob on Feb 24 2021 06:41:02 AM
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17188 Posts

Posted - Feb 24 2021 :  07:21:38 AM  Show Profile  Reply with Quote
Assuming you have set both:

VA Options -> Coloring and Attributes -> Show stable symbols in italics = On

VA Options -> Unreal Engine -> Enable support for Unreal Engine 4 = On

then Unreal Engine symbols should be shown in italics. At a guess, either you have not enabled VA's support for Unreal Engine, or Unreal Engine is not located under the directory "C:\Program Files\". If it is the directory location then we can work around this.

I am really confused by the Alt-G slow down, since it happens even with the file open. I don't think I have ever seen a problem like that before, and it seems completely separate to VA's Unreal Engine support.

As a test can you please create a new, default C++ console solution and then copy one of the Unreal Engine plugin's into the test solution, and add the .h and .cpp files to the test solution. I know this won't compile, I simply wanted to know if this Alt-G problem shows up when the plugin files are in a totally different location and solution.

I did run into a problem setting up and compiling the Unreal Engine source code from GitHub once, when the directory paths + file names got to long. There is a limit in Windows for how long a files total path can become. But since the files are being opened this should not be a problem.

But it is as if there is a problem with these specific directories and files, so I am trying to find out if the problem always shows up, or only under some conditions.

zen is the art of being at one with the two'ness
Go to Top of Page

tomob
New Member

Poland
6 Posts

Posted - Feb 25 2021 :  09:42:33 AM  Show Profile  Reply with Quote
quote:
VA Options -> Coloring and Attributes -> Show stable symbols in italics = On

VA Options -> Unreal Engine -> Enable support for Unreal Engine 4 = On

I have both options turned on. The Unreal Engine 4 option was on and I was using the "detect automatically" setting, but after your comments about the Program Files location I have changed it to always. I'm also not sure anymore about the "Show stable symbols in italics" option, because you've either made a typo again and meant system symbols instead of stable or I'm missing this option.

quote:
then Unreal Engine symbols should be shown in italics. At a guess, either you have not enabled VA's support for Unreal Engine, or Unreal Engine is not located under the directory "C:\Program Files\". If it is the directory location then we can work around this.

I indeed don't have UE4 under Program Files. It's a custom modified version of Unreal, so it's not a standard vanilla UE4 branch, but the engine itself is not heavily modified, we try to keep our code inside plugins. The path is actually shorter than Program Files as right now it's just "D:\p4\UE4\...", so I don't think we hit this issue.

I did the C++ console solution test and there the GoTo functionality works perfectly fine from the start. Of course it can't recognise a lot of the symbols as it's just a few files taken out in raw format from UE's code base, but the parts VAX can recognize it navigates to normally without issues.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17188 Posts

Posted - Feb 25 2021 :  12:08:30 PM  Show Profile  Reply with Quote
There is a known limitation in VA, that it won’t correctly pick up the Unreal Engine directory tree if it installed outside of "C:\Program Files\", which will stop VA from showing Unreal Engine symbols in italics:

case=105950

I have done quite a bit of testing of this, and I have never seen a performance problem like the one you are seeing, so no obvious clues there.

The fact that VA has no performance problems with the plugin files in the test solution suggests that the problem is something about the plugin sub-directory its self. Can you please open Windows Task Manager, set it to show More Details, if it is in simple mode, and see if you get a CPU usage spike for the "devenv.exe" process when you get the delay on Alt-G?

If not on the IDE process, is any other process showing anything obvious? For example anti-virus software? In theory something must be happening to cause this delay, some process being busy trying to do "something".


If you want to try working around the install location of Unreal Engine problem can you please create a junction point link to point at the installed engine. So:

Create the directory C:\Program Files\Epic Games
Open a command prompt inside this directory, and run the command:

mklink /J UE_4.26 "D:\p4\UE4\"

Where the second path is the directory where you have installed / placed Unreal Engine. This will create a directory link inside the Windows file system, so while Unreal Engine will appear to exist inside this Program Files sub-directory, is still where it was originally installed.

Now make sure all instances of the IDE are closed, and then go into the directory that holds your game solution. From here you should find in the following files:

Intermediate\ProjectFiles\UE4.vcxproj
Intermediate\ProjectFiles\UE4.vcxproj.filters

Open both files in a text editor, and do a search and replace for the old Unreal Engine path to the new Unreal Engine path, so in this case search

"D:\p4\UE4\"

And turn all instances into:

"C:\Program Files\Epic Games\UE_4\4.26\"

Save the changes and now reload the IDE and your solution.

To avoid having to do this again, if you run the Unreal Engine editor, or Unreal Engine script files via the junction point path then when they update the Visual Studio solution and project files Unreal Engine will use this junction path, rather than the actual physical path that the engine is installed into.

zen is the art of being at one with the two'ness
Go to Top of Page

tomob
New Member

Poland
6 Posts

Posted - Mar 01 2021 :  07:15:47 AM  Show Profile  Reply with Quote
quote:
The fact that VA has no performance problems with the plugin files in the test solution suggests that the problem is something about the plugin sub-directory its self. Can you please open Windows Task Manager, set it to show More Details, if it is in simple mode, and see if you get a CPU usage spike for the "devenv.exe" process when you get the delay on Alt-G?


Oh yes, devenev shows a spike the moment I press Alt-G in a plugins directory. It definitely is doing something. I have already previously tried with ale the antivirus software turned off, added directory exclusion rules, etc. And it didn't affect it.

I will just have to live with this issue for now if this isn't something very obvious. I wonder if it might be that there is a plugin that causes some issues for VAX to parse it and results in such a slow down? In such a case copying a random plugin to a new solution probably wouldn't show the issue. Is there some VAX debug log that would tell us something in such scenario?

The other solution you've suggested is not practical, because we often regenerate project files while we're working on UE4 so that would require me to repeat this work every time, in some cases multiple times a day.
Go to Top of Page

feline
Whole Tomato Software

United Kingdom
17188 Posts

Posted - Mar 01 2021 :  11:11:01 AM  Show Profile  Reply with Quote
Thank you for this, it is good to confirm that it is the IDE that is causing this delay. Something in your IDE profile is actually quite easy to test for.

Can you please close all instances of the IDE and then run the command:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\devenv.exe" /RootSuffix VATest

this will create and load a new, default profile for Visual Studio, so you will be asked which basic settings you want to use, and you should only have the standard, default IDE extensions installed. Visual Assist will not be installed into this profile, so you will need to go into the dialog:

IDE Extensions menu -> Manage Extensions

and install Visual Assist from the online extension store, to install VA for this test profile.

To load your normal, default profile just load the IDE normally. To return to this test profile again, pass the /RootSuffix command line switch when loading the IDE. You can run both profiles at the same time, next to each other. In VS2019 the profile name will be shown just under the close button, in the top right hand corner of the main IDE window. If you export your IDE settings from your main profile you can them import them into the test profile.

With the default IDE settings, and your normal solution loaded, do you see the same slow down when jumping into and around one of the plugin files? If not then this suggests that the trigger is either another extension you have installed.


A random thought, do you have the IDE's intellisense engine active or disabled? Disabling it is normally done via:

IDE tools menu -> Options -> Text Editor -> C/C++ -> Advanced -> IntelliSense -> Disable IntelliSense = True

zen is the art of being at one with the two'ness
Go to Top of Page
  Previous Topic Topic Next Topic  
 New Topic  Reply to Topic
 Printer Friendly
Jump To:
© 2019 Whole Tomato Software, LLC Go To Top Of Page
Snitz Forums 2000