When “Debugging enabled” is checked for a Release build, the only setting that should be changed is the “Generate debug info” option in Visual Studio. Perhaps we should change the IntroJucer label to “Generate debug info.”
As it stands, there is no way using IntroJucer to generate debug info for a Release build. Checking “Debugging enabled” in a Release target defines the macros DEBUG and DEBUG_ !!!
Turning on “Debugging enabled” forces optimizations off regardless of what you have set for “Optimisation”
Turning on “Debugging enabled” uses the Multi-threaded Debug runtime library.
Turning on “Debugging enabled” sets the DEBUG and DEBUG_ macros.
I don’t want any of these things…I simply need a Release build that generates a .pdb file! Its hard to imagine that this is not a common use-case. Who on earth sends a Debug build to the testing department? A Debug version is like a completely different app…different runtime library, different behavior (because of DEBUG macro), and different run time performance characteristics.
Besides, are you saying that IntroJucer only supports “common” use cases and that anyone else is SOL?
I can’t see how this could be done without each config having two different debug switches, the normal one which selects all the appropriate macros and libraries, and another switch that only affects the flag to generate the pdb… That seems like it’d be very confusing to me. Any better ideas?
This is still a problem. How can I make this clear…we need to be able to Generate Debug Info in Release builds. That is to say, that there needs to be a way to tell IntroJucer “I want my Release builds to be optimized, with all the settings as they are currently, except that I want to also generate debug symbols in the executable and also produce a .pdb file.”
Right now if I check “Debugging enabled” then technically, yes it allows debugging but it also sets the DEBUG and DEBUG_ macros which makes the app run very slow and is useless for profiling. I had “isPositiveAndBelow” showing up in my profiles along with all the other code that is called in jasserts.
There is no convenient way to profile a Release target generated in IntroJucer.
When I build an installer for pre-release versions of my software I always include the .pdb file and build the executables with symbols so that if there’s a crash I can get a decent stack. It is not possible to do this with IntroJucer.