|
Thanks Steve,
I am interested to learn how to "generate debug info for the release build". How to do this in Visual Studio?
regards,
George
|
|
|
|
|
What IDE do you use?
Steve
|
|
|
|
|
Visual Studio 2008, any ideas Steve?
regards,
George
|
|
|
|
|
I’ve only got MSVC6 here but I’ll give you instructions for that in the hope that you can adapt them to your version.
- Select "Project"->"Settings...."
- Select the "Release" build.
- Select the "C/C++" tab.
- Select "Program Database" in the "Debug info" combo (not "Program Database for Edit and Contine").
- Select the "Link" tab.
- Select "Debug" in the "Category" combo.
- In the "Debug Info" group" tick "Debug info" and press the "Microsoft format" radio button.
- Make sure "Separate types" in NOT pressed as it sucks.
Steve
|
|
|
|
|
Thanks Steve!
Two more comments,
1.
When I select to build release mode, and then pressing F5, do I debug release mode or debug more?
2.
What on earth is the difference in debug binary code and release binary code, and the so called debug info as you mentioned above? I think symbols are stored separately in PDB file, the differences should not be symbols?
regards,
George
|
|
|
|
|
It's best to debug in the debug build as the compiler doesn't perform optimizations which can sometimes confuse debuggers and also the libraries perform extra checks which can help catch bugs. Debug info can be built for both release builds.
Steve
|
|
|
|
|
Thanks Steve,
What are the so-called debug info? I think symbols are already in the PDB file, what else do you mean debug info?
regards,
George
|
|
|
|
|
The debug info is generally stored in PDB files.
Steve
|
|
|
|
|
Thanks Steve,
If debug information is in PDB file, then what are the additional information in debug binary compared with release binary?
regards,
George
|
|
|
|
|
The code will be different for a number of reasons including:
- Optimisations are disabled.
- You’ll possible depend on debug versions of certain DLLs.
- Libraries and possibly your own code will use
#ifdef s to add extra runtime checks to debug builds.
Steve
|
|
|
|
|
Thanks Steve,
1.
"debug versions of certain DLLs" -- you mean DLLS ends with D?
2.
"extra runtime checks" -- I remember there is some checks like stack overflow checking, do you mean mean something like this? If yes, my question, why we do not add such useful checking to release code (all code needs to be have enough sanity checking to make it reliable)?
regards,
George
|
|
|
|
|
George_George wrote: "debug versions of certain DLLs" -- you mean DLLS ends with D?
The naming convention used is up the the DLLs author, but appending a "D" is common.
George_George wrote: "extra runtime checks" -- I remember there is some checks like stack overflow checking, do you mean mean something like this? If yes, my question, why we do not add such useful checking to release code (all code needs to be have enough sanity checking to make it reliable)?
Search through MFC's source code for #ifdef _DEBUG and see for yourself.
Steve
|
|
|
|
|
Thanks Steve,
But do you think the release code has any risk or issues if we remove the runtime checking code?
regards,
George
|
|
|
|
|
The check are only meant for debugging purposes. Hopefully by the time you release the product you've fixed the bugs.
Steve
|
|
|
|
|
Thanks Steve,
I got the point.
1. In beginning phase, we use debug version binary which contains more information to debug when there is issues like stack overrun. Such debug information is injected only in debug binary by compiler;
2. When we fixed all bugs in debug version, then we should use release version for deployment.
Are them your points?
regards,
George
|
|
|
|
|
That's pretty much it.
Steve
|
|
|
|
|
Cool, Steve. I also tested the PDB for release and debug are different.
regards,
George
|
|
|
|
|
Naturally. Given that the code is different and that a PDB is like a map of the contents of the application this is to be expected.
Steve
|
|
|
|
|
Thanks Steve,
It is my mistake to think we can not debug and set breakpoint for release binary. For the source code which is optimized out, we can see it in Visual Studio, set breakpoint, but never stops on them in release mode, but stops on debug mode. Correct?
regards,
George
|
|
|
|
|
In general you can set breakpoints in release builds just fine. If code is optimised out then it's never called so a breakpoint in such code will not be hit in release of debug builds.
Steve
|
|
|
|
|
Thanks Steve!
Question answered.
regards,
George
|
|
|
|
|
Setpadding() is just to set the space around each tab's icon and label. But now I want to set the space between tabs. I tried to resize each tab rect in DrawItem(). But a problem appears that OnLButtonDown() will not respond when I click near the right edge of the last tab. It seems that CTabCtrl still remain it's original rect to receive message.
Can you help me? Thanks!
|
|
|
|
|
Hi Experts,
How can I use IShellFolder to create tree like explorer?
|
|
|
|
|
|
Hi All,
I have done the dialog based application in MFC.I Have 5 dialog boxes. IDD_ANALYZER_DIALOG is my main dialog but i dont want this dialog as main dialog. I need another dialog as a main dialog.
Thanks & Regards,
Anitha
|
|
|
|