Author |
Topic |
dreijer
Ketchup Master
62 Posts |
Posted - Jan 10 2008 : 4:00:33 PM
|
I recently got my hands on the latest version of VAX (1624), but am now experiencing a great deal of issues I hadn't experienced earlier in VS2005 (I'm now using VS2008, but the issues I'm seeing with 1624 seems to happen in VS2005 as well).
I compiled a list of things I've noticed over the past couple weeks. Please note that I'm merely describing the issues I'm experiencing with the latest version and it's supposed to be constructive criticism only ():
- At the end of functions when I hit 'r' to type 'return', in VS2005 this would always be the first item on the suggestion list since I do that quite a lot and it's a very natural thing to do just before the closing bracket in a function. Now, however, many other symbols like RET_SOME_CONSTANT are suddenly also on the list, sometimes taking precedence over the one I want (return). This is often very annoying, since I'm quite used to just typing the first letter and hitting Enter since I know that's what VAX would suggest (and thus it speeds up my coding tremendously)
- There seems to be some major issues with the STL library in the latest version of VAX. Take for-loops, for instance, in which I want to access .begin() and .end() of, say, a simple std::vector. VAX is now often unable to suggest the right method and if I hit begin( it writes BEGIN_ATTRCOM_MAP instead. If I erase the suggestion by ctrl+z (as I always did in VS2005 when VAX would suggest something wrong) and try typing begin( again, VAX once again inserts BEGIN_ATTRCOM_MAP rather than letting me write what I want (this happens for other custom classes too that VAX for some reason is unable to parse). I just rebuilt the symbol database and VAX still isn't able to recognize a simple 'const vector<unsigned long>& someVar' function argument.
- VAX has auto-correction of variable names (to fix incorrect capitalization etc.). The problem I'm experiencing now is that if VAX is unable to parse the objects (which currently happens way too often) it incorrectly corrects the variable name when I hit . and it doesn't matter if I hit ctrl+z to undo the changes. That is, when I hit . VAX changes the variable name to a symbol it knows and I can't avoid VAX auto-correcting the variable name.
- VAX has also shown to have problems parsing virtual base classes. Soetimes, it cannot provide function information for pure virtual classes.
- When creating a new class and I want to write 'private", I start by typing 'pri' and VAX suggests the following: PRI_KEY_FLAG, prime_field, PrimeAndGenerator, and PRIVATE before finally listing the entry I want (private). The aforementioned constants are all part of the Crypto++ library, which I guess the latest version of VAX is now parsing correctly (at least I didn't see these constants interfering with my coding in older versions of VAX). It's clear that the constants are listed in alphabetical order, but they should really fit into the context as well. If I'm defining a class, chances are that I'm looking for 'private', 'protected' and 'public' rather than a random constant in a third-party library like PRIVATE. The same goes for writing parameters to a function call. VAX now suggests class and struct names rather then local variables. For instance, if I have a struct called Game and a local variable called 'game', VAX suggests Game before 'game'. VAX used to handle this better. Furthermore, it feels like all my own symbols are always listed last, rather than first, even though there's a higher chance I want to use my own than a third-party's.
- Often, in VS2008, VAX suddenly starts parsing a file and while it's doing so I'm unable to use Alt+G. For instance, if I go to a source file and change a method in a class, VAX reparses the file but does it so slowly that using the excellent Alt+G shortcut doesn't work even 5 seconds after I made the change (which means I have to fall back on Visual Studio's IntelliSense)
To sum up, the latest version of VAX (1624) has not boosted my productivity, but instead reduced it. There are way too many cases (especially with STL containers) where I experience that VAX cannot auto-complete what I'm typing, or where I have to manually go back and undo the auto-completion, and it has simply become too obnoxious to always keep an eye on the suggestions since they are often incorrect. I'm considering going back to an older version and stay with VS2005 until VAX has become usable again. It seems like the parser has become worse since the last version I used.
I hope other users recognize at least some of the problems to confirm that it's not just my environment that's playing tricks on VAX.
Cheers! |
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 10 2008 : 4:19:38 PM
|
Thank you for a detailed report. I have seen quite a few people saying "VA 16xx does not work", but unfortunately I cannot do much without more details.
Point 1, if you add a VA Snippet with the shortcut "r" and the text "return" this should fix this problem. There are changes in what gets suggested when, but you should not be having these sorts of problems.
For now though this should help while we work on the bigger problems first.
Point 2, do you have the time to run a couple of quick tests please? Can you add the following code to one of your cpp files:
#include <vector>
static void testStdVectorFunctions(const vector<unsigned long>& someVar)
{
someVar|;
}
when I do this, and then type ".beg" VA is correctly listing "begin" in the listbox. With ".be" I am seeing the two items "begin" and "rbegin"
I am seeing the same behaviour in both VS2005 and VS2008 with VA 1624. If this fails for you can you create a new, default test project and try the same test. Does it work of fail here?
Something is clearly causing you a lot of problems, but without some idea of what that something is...
Point 3, it sounds like VA's correction is working correctly, but the problem is it does not know what members to list after a dot. Hopefully the std::vector tests will shed some light on this.
Points 4 and 5, I am not sure, this sounds like the earlier points in a different guise.
Point 6, can you please run a CPU meter, and then trigger:
VAssistX -> Tools -> Reparse Current File
in one of these problem files. How long does this take? Are you seeing a major CPU spike? It is possible (just a guess for now) that the IDE's intellisense scanner is kicking in, and using all of the CPU time, so VA does not get chance to parse the file.
How big are the files? 20 lines? 2,000 lines? 200,000 lines? Unless the files are very large (20,000 lines or more) parsing should be "instant". If it is not then this might offer a clue to the other problems you are seeing. |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 11 2008 : 05:25:03 AM
|
quote: Originally posted by feline
For now though this should help while we work on the bigger problems first.
Point 2, do you have the time to run a couple of quick tests please? Can you add the following code to one of your cpp files:
#include <vector>
static void testStdVectorFunctions(const vector<unsigned long>& someVar)
{
someVar|;
}
when I do this, and then type ".beg" VA is correctly listing "begin" in the listbox. With ".be" I am seeing the two items "begin" and "rbegin"
I just pasted the code directly into my current project. When I first hit . nothing happened (which is that latency/slow parsing issue I described earlier). Then, I waited a second and hit . again and got the following suggestions: BEGIN_ATTRCOM_MAP and break. When I tried pasting the code snippet again (i.e. start over), I wasn't able to get auto-complete at all (although writing the first few letters of the function argument 'someVar' gave me auto-completion on that variable name). When I paste it looks like the devenv.exe process is using more CPU, but I assume that's just for IntelliSense and it's nothing near 50% (I have a Duo Core). It's more like 12% or occasionally 20%.
Choosing VAssistX -> Tools -> Reparse Current File is almost instant and does not cause a major CPU spike (more like 8% in less than a second).
It might be worth mentioning that my current project has been upgraded from a VS2005 solution.
Creating a new clean solution seems to work just fine (I can get .begin and .end on the vector), but then again that's just a single file rather than 50 (if that matters to VAX). |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 11 2008 : 05:58:00 AM
|
Update: I just created a new VS solution file for my project to make sure nothing went wrong in the upgrade process. Here's what I found:
- Some files (the fairly simple and small ones) seem to work just fine for e.g. STL vectors
- In larger files (e.g. ~1000 lines), when I click . VAX indicates that it's parsing the file but nothing happens. If I click somewhere else and then go straight back to the original location and hit . again, VAX indicates it is parsing again. It feels like it fails to parse the file. The parsing message is also displayed for several seconds in the VS status bar although the CPU usage continues to stay low. Sometimes, if I wait patiently for the parsing to finish, delete the ., and hit . again then I can get the methods on the vector. However, if I then erase the . and hit . again, VAX tries to parse the file once again
After a bit of testing, it seems I'm only experiencing this problem on larger files. For instance, if I take one of the larger files and delete a big chunk of it, the code snippet you posted earlier works without problems. I think the limit is around 500 lines in a source file before VAX breaks. The issues I had with symbols on pure virtual classes has also been tracked down to this large file issue. I have no problems in smaller files.
Hope this helps. |
Edited by - dreijer on Jan 11 2008 06:53:05 AM |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 11 2008 : 10:29:46 AM
|
Using VS2005 and VA 1624 running on win2k I have just tried this. I am sitting at the bottom of a large cpp file, currently on line 22,992 (yep, that large!) and I have copy / pasted in the sample function.
When I type the dot the correct listbox appears in under 1 second. Delete and re-type the dot, and the listbox is even faster.
This file is used for stress testing VA on big files, and generally shows problems due to its sheer size.
Running the same test in VS2008 and VA 1624, running on winXP, I am seeing the same results.
Pure file size on its own is not the trigger here.
I suspect there is something in your files that is "building up", and confusing VA's parser. That, or a specific problem bit of code, that is deleted when you trimmed the file down.
If you take one of your single "large" files, and add it to a new test project can you still produce the problem? I am just wondering if the file in isolation, without its headers, is enough. I am not interested in the code actually compiling at this stage.
If you open the alt-m list, are you seeing all of the functions in the file? Or are functions at the bottom of the file missing? This is a good test for "major" parser problems with a file.
If this file on its own is enough to show the problem, is there any change of getting such a file for testing purposes? |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 11 2008 : 11:04:16 AM
|
Taking one of the large files that failed to parse correctly and putting it into my clean project made VAX operate as expected (that is, .begin and .end both worked). It must be something else in my project that triggers this (maybe something that I include in the larger files but not in the small files?).
Alt+M works as expected.
Could you by any chance send me that big test file of yours, just so I can see if that fails in my environment as well?
Oh, and I should probably mention I'm on Vista. Not sure if that makes a difference or what. |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 11 2008 : 11:49:34 AM
|
I have uploaded the file here:
http://forum.wholetomato.com/colin/forumimages/test_large_file.zip
as a zip file. I suspect you will see the same results as me, but it is certainly worth checking.
At a guess, the problem is being caused / triggered by something in one of the header files. If you open one of these large files, does the sample function fail everywhere in the file? Or does it work at the very top and fail at the very bottom?
A macro that is defined in the header files, and used in the cpp file might explain what you are seeing.
I am hoping that if the problem starts part way down the file this can be used to try and pin down the trigger. |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 11 2008 : 11:59:25 AM
|
The large file you sent works fine as well.
Pasting the code snippet at the top doesn't fix the problem (it fails everywhere). A strange thing, though, is that if I erase the contents of the file (mine, not the one you sent) and insert the snippet, it still doesn't work. Also, the file I tested earlier today by removing a big chunk of it, now fails completely too.
My solution consists of multiple projects. Does that have anything to say? |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 11 2008 : 2:05:18 PM
|
Can you please go to:
VA Options -> About -> Copy Info
and paste the details (from the clipboard) into this thread. This will give us the basic information about your setup.
This is most unexpected. Deleting everything in the file... *considers*
This suggests something in the project settings or other project files. Additional / custom include directories, local classes with matching names, something like this.
Can you try this code please:
#include <vector>
static void testOnlyVectorFunction(vector<unsigned long> paramVecOnly)
{
paramVecOnly|;
}
static void testStdVectorFunction(std::vector<unsigned long> paramStdVec)
{
paramStdVec|;
}
Re-looking at it, I left out the "using namespace std;" line, so there is some ambiguity over exactly what "vector" is.
Do you see the same behaviour in both functions? Any differences? If you use alt-g on the types "vector" and "std::vector" where does VA want to take you?
Multiple projects should not be a factor. How many do you have? My main test solution has 6 projects, a mix of C++, CLR C++, VB.NET and C#, without any problems. |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 11 2008 : 3:03:12 PM
|
I tried pasting the code into one of the files that fails. The second function worked instantly, the first didn't. However, once I tab out of the IDE and into it again, and I hit . in the second function, then I see the behavior where VAX is parsing the file for several seconds (according to the status bar) after which I can delete the . and re-enter it to get the correct list. It's important to note, however, that the file into which I'm pasting the sample code already has "using std::vector;" so the vector type should be fully qualified. Somehow, VAX gets confused anyway...
The behavior I'm seeing is very sporadic, though. For instance, I just deleted the entire contents of the file, pasted the sample code, and both functions worked fine. I then ctrl+z'ed the changes and pasted the two functions at the end of the file as I had done originally, and now the second function didn't work...
One thing I've noticed, though, is that if I place the cursor right after the variable name (e.g. paramStdVec) without hitting . and look at the Go-line, it's blank (i.e. VAX doesn't recognize the symbol). If I wait patiently for a few seconds (3-5), VAX finally recognizes it as "std::vector<unsigned long> paramStdVec" and I can hit . to get the symbol list (this holds for both functions). Furthermore, when I tab in and out of the IDE, the Go-line is empty again and I have to wait for several seconds before VAX recognizes the symbol.
I guess you mean VA Options -> System Info -> Copy Info:
VA_X.dll file version 10.4.1624.0 built 2007.12.07 DevEnv.exe version 9.0.21022.8 msenv.dll version 9.0.21022.8 Font: Courier New 13(Pixels) Comctl32.dll version 6.10.6000.16386 Windows Vista 6.0 Build 6000 2 processors
Platform: Win32 Stable Includes: C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\include; C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\atlmfc\\include; ; C:\\Program Files\\Microsoft SDKs\\Windows\\v6.0A\\include;
Other Includes:
Stable Source Directories: C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\atlmfc\\src\\mfc; C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\atlmfc\\src\\mfcm; C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\atlmfc\\src\\atl; C:\\Program Files\\Microsoft Visual Studio 9.0\\VC\\crt\\src;
Thanks for the great effort in tracking down the problem, feline! |
|
|
Rain Dog
Ketchup Master
88 Posts |
Posted - Jan 11 2008 : 8:41:58 PM
|
I've actually been experience similar problems in that I get totally incorrect suggestions and replacements, what is most frustrating is having to press escape in order for VAX to not overwrite the text i have just written with something bogus.
Let me test it on my project again later tonight and I will send the whole project to you. |
|
|
Uniwares
Tomato Guru
Portugal
2322 Posts |
Posted - Jan 12 2008 : 5:07:05 PM
|
Most of the issues "dreijer" describes here, I am seeing too in VS2005. |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 14 2008 : 07:49:46 AM
|
Uniwares has #define macro's for the start and end of namespaces, e.g.
#define START_NAMESPACE namespace Uniwares {
#define END_NAMESPACE };
and these are causing some problems in VA 1624. dreijer and Rain Dog do your projects contain anything similar?
Uniwares I was not aware you were seeing these problems as well. Are these problems new, or have you been seeing them for a while? |
zen is the art of being at one with the two'ness |
|
|
Uniwares
Tomato Guru
Portugal
2322 Posts |
Posted - Jan 14 2008 : 08:06:17 AM
|
Sorry feline, I am a bit short of time thats why I am not reporting all the issues I am having (which are quite a lot). And those problems are all 16xx related. But definitely 1624 has quite some more than previous builds. |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 14 2008 : 08:35:44 AM
|
I do understand that and I know you are often very busy.
Something seems seriously broken for quite a few people in 1624, but what is it? |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 14 2008 : 08:47:03 AM
|
quote: Originally posted by feline
#define START_NAMESPACE namespace Uniwares {
#define END_NAMESPACE };
and these are causing some problems in VA 1624. dreijer and Rain Dog do your projects contain anything similar?
No. I just have "using std::vector;", for instance.
quote: Originally posted by feline
Something seems seriously broken for quite a few people in 1624, but what is it?
Maybe we should all go back and try out previous versions of VAX and see if they work as expected? This means I have to go back to VS2005, though. What do you recommend feline? I'm holding back my other VAX issues until we've fixed this since it feels like it's the source of many other problems. |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 14 2008 : 1:27:24 PM
|
Can you try both VA 1623 and 1619 please, and see if this makes any difference:
http://www.wholetomato.com/downloads/getBuild.asp?1623
http://www.wholetomato.com/downloads/getBuild.asp?1619
Both versions support VS2008 RTM.
There seem to be two broad groups of error reports going on here.
* every build after VA 1561 is broken * VA 1624 only is broken
I am not sure how many of the people saying everything after 1561 is broken have tried intermediate 16xx builds.
Knowing when a problem appeared is helpful, but it would still be good if we could actually find out what is going wrong for you in your files. |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 14 2008 : 2:40:41 PM
|
1619 is still broken (I didn't try out 1623 since that's newer). It's like VAX fails to parse the file somehow. At least I'm told that VAX is parsing the file multiple times whenever I delete, insert or do something in the file. Like, if I remove the . I have to wait like 5 seconds until VAX has recognized the variable and I can hit . again to get the function list. |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 14 2008 : 3:19:51 PM
|
1619 broken is sort of good news, thank you for that. This eliminates all of the changes in 1624 that are related to the crashes some users are seeing, which is good. This also suggests you are seeing the "general" problem that "16xx is broken". Now if we could just find and fix this problem.
Do you have:
VA Options -> Advanced -> Fonts and Colors -> Local symbols in Bold
turned on? The status bar is not always a reliable indicator, because the IDE thinks it owns the status bar, and sometimes wants to use it
If you have local symbols in bold turned off can you please turn it on. How long it takes a new symbol to go bold should be a reliable indication of file parsing speed. Unless your files are 20,000 lines long, or *really* nasty, file parsing should be a lot faster than it seems to be.
This might be a good way to try and find out what is going wrong. |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 14 2008 : 4:01:52 PM
|
Once again, I'm seeing confusing results:
When I first pasted in the code after enabling syntax highlighting (I normally have it turned off) and turned the "Local symbols in bold" feature on, it worked perfectly (the function list popped up as expected). When I turned it off, it still worked.
I then closed the IDE and relaunched it and did the exact same thing. This time, however, nothing worked.
When "Local symbols in bold" is turned on and I haven't hit . after the variable name, the symbol is not in bold. When I hit . the symbol is bolded but no list appears.
Just now I tabbed out of the IDE and back in again, and now it suddenly works. Geez... |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 15 2008 : 07:51:52 AM
|
This at least I can explain. Consider this line of code:
int nFoo|
what is the variable name? Is the variable "nFoo" or am I actually half way through typing "nFooBar"? VA will not attempt to make "nFoo" bold until it is sure this is actually a variable name. Typing a dot after it will make this clear, since that ends the variable name and starts something else.
Does this make sense?
Removing the "place caret here" markers from the sample code gives us:
#include <vector>
static void testOnlyVectorFunction(vector<unsigned long> paramVecOnly)
{
paramVecOnly;
}
static void testStdVectorFunction(std::vector<unsigned long> paramStdVec)
{
paramStdVec;
}
If you copy / paste this the delay between pasting the code and the local variables going bold should give us some form of clue.
Pasting this version of the code into the bottom of the large file, so basically at line 23,000 the variables go bold in under 1 second. Once variables are bold I would expect VA to know what they are, and to be able to produce a listbox.
If you show VA View, then place keyboard focus back into the editor, and now hover the mouse over one of these variables is the correct information displayed? |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 15 2008 : 08:11:48 AM
|
quote: Originally posted by feline
This at least I can explain. Consider this line of code:
int nFoo|
what is the variable name? Is the variable "nFoo" or am I actually half way through typing "nFooBar"? VA will not attempt to make "nFoo" bold until it is sure this is actually a variable name. Typing a dot after it will make this clear, since that ends the variable name and starts something else.
Does this make sense?
Yes, I guess it makes sense. I don't use VAX syntax highlighting anyway, so it doesn't matter much to me. :)
quote: Originally posted by feline
If you show VA View, then place keyboard focus back into the editor, and now hover the mouse over one of these variables is the correct information displayed?
When I paste in the code in one of my files for which VAX fails, they instantly go bold after I hit . However, the list box isn't shown. If I wait for several seconds (until the notification in the status bar has finally disappeared), delete and reenter the . then the list box appears. As I said earlier, though, if I tab out of the IDE and back in again, then I have to wait 5 seconds again before I can get the list box to appear.
Hovering the mouse of the variable name has no effect until after the 5 seconds have passed and VAX has identified the symbol. |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 15 2008 : 10:00:00 AM
|
This delay sounds like it should mean something, but I am not sure it is helpful. There are so many variables at work here. The size of your solution, the number of other running programs, etc.
Lets try going back to basics. Do you have a file and a variable where typing dot never produces the correct listbox?
Do you have:
VA Options -> Advanced -> Listboxes -> Get content from default Intellisense
turned On or Off? Does playing with this setting make any difference? |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 15 2008 : 10:56:06 AM
|
quote: Originally posted by feline
This delay sounds like it should mean something, but I am not sure it is helpful.
Yes. I'm trying to show that there's a parsing issue going on where VAX for some reason is way too slow to figure out the type of a variable (even after it has determined it once).
quote: Originally posted by feline
Lets try going back to basics. Do you have a file and a variable where typing dot never produces the correct listbox?
No. I can always get the list box if I wait patiently before hitting .
quote: Originally posted by feline
Do you have:
VA Options -> Advanced -> Listboxes -> Get content from default Intellisense
turned On or Off? Does playing with this setting make any difference?
When I enable the setting, hitting . sometimes yields an IntelliSense error in the status bar "Expression to the left of . or -> has a type which could not be resolved". Other times, it works fine.
Other things I've noticed after enabling the IntelliSense setting:
- Auto-completion suggestions are now very slow. Often, I can write almost the entire variable name before the suggestion list box pops up (and sometimes it doesn't even show).
- Hitting Enter once I've selected the symbol in the list box (like end()) doesn't automatically insert the brackets as VAX usually does.
With that said, having the setting turned on definitely improves upon the issue with showing the list box for std::vector. |
Edited by - dreijer on Jan 15 2008 10:57:57 AM |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 15 2008 : 1:46:16 PM
|
Just to double check, you are seeing the same problem when you delete most / all of the code in one of the files in your main solution?
If so then this seems to rule out the current file as the cause of the problem, which leaves the solution in general.
How large is your solution? If you open the OFIS and FSIS dialogs the title bars tell you the total number of symbols. What are these numbers? What is the memory usage for the IDE?
Do you have:
VA Options -> Performance -> Keep symbols in memory for fast response after Alt+Tab
turned on or off? |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 15 2008 : 2:29:30 PM
|
quote: Originally posted by feline
Just to double check, you are seeing the same problem when you delete most / all of the code in one of the files in your main solution?
If I delete all of the code in the file, everything seems to work. It takes a few seconds after I've pasted the code for the IDE to provide auto-complete, but once it works everything is fine (I even get the brackets after begin() and end()).
After I had erased the entire file, I hit undo and tried pasting the code at the end of the file. Once I started writing a for-loop, VS crashed. According to the stack trace I've got, VA_X.dll is part of the call path (I don't have the symbols for the DLL, but I bet you do ):
> ntdll.dll!76e22ea8()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!76e76394()
ntdll.dll!76e8f158()
ntdll.dll!76e8f1de()
ntdll.dll!76de8dd4()
ntdll.dll!76de40f0()
ntdll.dll!76e41039()
ntdll.dll!76e4100b()
ntdll.dll!76e029d7()
ntdll.dll!76e40e97()
ntdll.dll!76e41843()
ntdll.dll!76e416dc()
ntdll.dll!76e41843()
user32.dll!769f1a91()
user32.dll!769f1b41()
VA_X.dll!1eefbf13()
VA_X.dll!1eec4ef8()
VA_X.dll!1ee3ca90()
VA_X.dll!1ee3d971()
VA_X.dll!1ed281b3()
VA_X.dll!1ed9b2a7()
VA_X.dll!1ed1669a()
VA_X.dll!1eefbf13()
VA_X.dll!1ed02ab4()
VA_X.dll!1ed02afa()
VA_X.dll!1eef794a()
VA_X.dll!1eef796e()
VA_X.dll!1eecbee2()
VA_X.dll!1eec77c2()
VA_X.dll!1edccd7c()
VA_X.dll!1eeca0ac()
VA_X.dll!1eeca139()
user32.dll!769f1a10()
user32.dll!769f1ae8()
user32.dll!769f1a91()
user32.dll!769f2a47()
user32.dll!769f2a98()
VA_X.dll!1ed28a96()
msenv.dll!5bca5b21()
msenv.dll!5bca5abc()
msenv.dll!5bca5a8b()
msenv.dll!5bc9f99e()
msenv.dll!5bca3b2d()
devenv.exe!2f3ea4a6()
devenv.exe!2f3e7301()
ntdll.dll!76e40000()
ntdll.dll!76e42447()
ntdll.dll!76e41843()
ntdll.dll!76e45244()
ntdll.dll!76e45244()
advapi32.dll!76ab60ce()
advapi32.dll!76ab610c()
advapi32.dll!76ab663c()
ntdll.dll!76e3f360()
advapi32.dll!76ab649d()
advapi32.dll!76ab6578()
advapi32.dll!76ab6578()
devenv.exe!2f3e1d09()
kernel32.dll!75783833()
ntdll.dll!76e1a9bd()
When I had restarted the IDE, the IntelliSense setting had been disabled (that's another thing I've noticed. If the IDE isn't closed properly, the VAX settings aren't saved). Anyway, with the setting turned off the list box didn't appear when I tried to access the vector's functions. However, as soon as I enabled the setting it worked. The brackets weren't shown though.
I then deleted everything in the file and wrote a new function as follows:
#include <vector>
using std::vector;
void func()
{
vector<Map> ding;
for (vector<Map>::const_iterator dingItor = ding.begin)
{
}
}
First of all, the list box didn't show immediately (I had to wait as usual). Once it appeared, the brackets weren't appended automatically.
quote: Originally posted by feline
How large is your solution? If you open the OFIS and FSIS dialogs the title bars tell you the total number of symbols. What are these numbers?
OFIS and FSIS dialogs?
quote: Originally posted by feline
What is the memory usage for the IDE?
The memory usage right after the crash is 76.048K.
quote: Originally posted by feline
Do you have:
VA Options -> Performance -> Keep symbols in memory for fast response after Alt+Tab
turned on or off?
Turned on. |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 15 2008 : 3:00:49 PM
|
VA saves its settings when you close the IDE, so if the IDE crashes then they are not saved. The crash, we may have a fix for this. Please contact me via the form:
http://www.wholetomato.com/support/contact.asp
including this thread ID or URL in the description, so we can match it up.
OFIS and FSIS dialogs - apologies, my fault, that was not clear. Open File in Solution (Alt-Shift-O) and Find Symbol in Solution (Alt-Shift-S).
However deleting the code in the file fixes the problem, this gets us back to something about your code.
Can you try simply deleting all of the #include statements, and then telling VA to reparse the file:
VAssistX -> Tools -> Reparse Current File
And then try the sample code. If this helps then it suggests that one or more of the headers is behind the problem, which would explain why a single file in a test project did not show the problem. |
zen is the art of being at one with the two'ness |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 15 2008 : 6:25:40 PM
|
OFIS: 166 FSIS: 31769
At first, forcing a reparse of the file didn't fix the problem, not even when I deleted all the contents. Now, after I've played around for a while inserting and removing functions it suddenly works. I just restarted the IDE and inserted the sample code, and it worked perfectly fine. I still have the IntelliSense setting turned on, so that definitely helped cure things.
By the way, another issue I've been experiencing is that the first item in the suggestion list box isn't selected by default. That is, when the list box appears and there's only one entry and I hit enter, rather than selecting the item I instead insert a newline.
I'll keep you posted if things keep working for me... Let me know what else you need me to test.
UPDATE: Alright, so just after I had submitted this post I started experiencing some problems. I went to a random function in one of my larger files and started writing a for-loop. The suggestion list box took a while to display when I started writing the local variable names.
I started typing the following: for (set<unsigned long>::iterator matchItor = matchRejects) When I typed "for (set<" no auto-completion would be suggested until after a second or two. After typing 'matchRejects' (the first part of it) and selecting it from the auto-complete list box, the IDE would hang for a second before I could move the cursor again and hit . Furthermore, when I started typing 'matchRejects', VAX would suggest a totally irrelevant symbol, like a struct name. When I hit . to get the list of functions for 'matchRejects' (which is a set<unsigned long>), the list box would appear instantly but selecting 'begin' didn't automatically append the brackets. |
Edited by - dreijer on Jan 15 2008 6:35:28 PM |
|
|
feline
Whole Tomato Software
United Kingdom
18995 Posts |
Posted - Jan 16 2008 : 1:03:19 PM
|
There is nothing odd or worrying in the number of files, or the memory usage. In fact it sounds like a small solution. If you have 20,000 files I would start wondering about solution size, but not here.
Suggestion listboxes and focus, have a look at this FAQ entry:
http://docs.wholetomato.com?W350
The pause while typing, that sounds a lot like the IDE its self is causing the problem. If this is the IDE then you should see a serious CPU spike happens when ever the IDE stops / pauses. This is a well known problem with the IDE's intellisense scanner in C++, which is why a lot of our users disable it. See this FAQ entry for details:
http://docs.wholetomato.com?W133
Unfortunately disabling the IDE's intellisense is a bad thing if you want to keep "Get content from default Intellisense" turned on, since there is no default intellisense.
One piece of news that might be related. There is a known problem with VA's parser and function parameters of the type const std::string &
case=9784
This might be a factor in some of the problems you are seeing. This has been fixed in the next build of VA, which should be posted in the next few days. When you run into this problem VA cannot produce a listbox its self, but you can get a listbox from the IDE. Sometimes this requires pressing CTRL-SPACE to trigger the IDE listbox.
What you have described does not exactly fit with this bug, but the fix should help something a bit. |
zen is the art of being at one with the two'ness |
|
|
sean
Whole Tomato Software
USA
2817 Posts |
Posted - Jan 18 2008 : 11:10:19 AM
|
case=9784 is fixed in build 1626 |
|
|
dreijer
Ketchup Master
62 Posts |
Posted - Jan 18 2008 : 12:14:28 PM
|
Yesterday I had to override a class with >100 pure virtual methods. It really highlighted the issues I'm seeing with VAX. here's a list of my observations: - Sometimes when entering {, a closing } was not automatically inserted. This behavior was very inconsistent. Sometimes VAX inserted the closing bracket, other times not.
- Most of the overridden functions basically just needed to call a method on a private member variable. However, often I would write the variable name and hit -> without any effect. Then I would have to wait for VAX to recognize the symbol. Once the symbol had been found, the list box with methods appeared instantly. However, once I selected a method and I began typing the arguments, which happened to match the arguments to the method I had overridden, I would often experience that VAX wasn't able to help me auto-complete it. I would type almost the entire word before VAX would recognize it. Sometimes, I could almost finish typing all the arguments for the function before VAX started recognizing any of them. I never experienced any serious spikes in CPU usage, which never hit 50% (the highest I observed was 20%)
It's really sad VAX was so inefficient in the above case. This was a perfect scenario where auto-completion would really have come in handy. None of the overridden functions used STL and at the most they used types defined in the DirectX SDK.
I just reproduced the behavior in this project: http://www.gamedev.net/community/forums/topic.asp?topic_id=359794 Hopefully, you can too. Take a look at the MyDirect3DDevice9 class. Go to line 399 in d3d9.h (the DirectX SDK) and copy all of the pure virtual methods into the aforementioned class. Then start overriding each member function and you should see how VAX falls behind.
Hope this helps. |
|
|
Topic |
|
|
|