Next: Canny Edge Detection
Up: SLI practical writeup
Previous: Analysis and conclusion
  Contents
Although being a very powerful tool for simulating execution and
communication of behaviours across different platforms, VCC has many
issues that makes programming, version control and especially
debugging extremely (and seemingly unnecessarily) difficult. In my
opinion way too much development time was wasted fighting battles with
the program. Most of these problems were due to unspecific error
messages (IE. in the worst of all the battles in which I was involved,
Benjamin and I spent six hours merging our code which was very hard
because of an error message which did not make any sense to us
(``Error executing pinpointu.exe'') and this even being used for two
different problems (one of them simply being that the path name was
too long) so that the true problem was extremely hard to identify),
but also problems such as VCC being unable to use newly added data
types before exiting and restarting the program made the
implementation into a very time consuming task. That each and every
behaviour in a simulation has to be recompiled before simulating meant
that debugging included waiting approximately six minutes every time
you change some code (I know that the solution to this is just writing
correct code in the first place, but this is not always realistic to
do).
One annoying problem is that the whitebox C is not ANSI C
compliant. This means that for example the following does not work:
(&variable+1)=value;
whereas the following is fine:
pointer = &variable;
(pointer+1)=value;
When you know this you can of course easily avoid any problems, but I
cannot see the point in implementing something which is almost but not
entirely ANSI C.
Another place where whitebox C differs from other standards is when
using memcpy. In this implementation it seems that the memory
areas may overlap (which they mustn't if conforming to the ISO 9899
standard). Something like this will be likely to cause problems when
moving from the simulation environment to a real C language and might
even produce incorrect simulation results as the correct function to
use in this case is memmove which must be about twice as slow as
memcpy (but which I can't even find in VCC). I am probably
being too pedantic about this.
Next: Canny Edge Detection
Up: SLI practical writeup
Previous: Analysis and conclusion
  Contents
Morten Bek
2001-04-16