|
Thanks Saurabh!
I have set the option, but how to see the release mode assembly code together with the source? I have tried with dumpbin /disasm, but seems only assembly code is displayed.
regards,
George
|
|
|
|
|
Did you opened the asm file generated? The file should be in the Release folder. The source in added as comments in the asm file itself. So for every line of source it will clearly show the assembly generated.
-Saurabh
|
|
|
|
|
Thanks Saurabh,
What do you mean "open"? Execute it or?
regards,
George
|
|
|
|
|
asm is a text file!!! Just open it in your favourite text editor. Visual Studio will do just fine.
-Saurabh
|
|
|
|
|
Thanks Saurabh,
1.
I find there is a new file named main.asm generated, do you mean that file?
2.
My purpose is to find the related assembly code is optimized in release mode, does turn on the option of Assembler Output impact the actual optimization in release mode?
regards,
George
|
|
|
|
|
George_George wrote: find there is a new file named main.asm generated, do you mean that file
Yes I mean that file.
George_George wrote: My purpose is to find the related assembly code is optimized in release mode, does turn on the option of Assembler Output impact the actual optimization in release mode?
Why don't you compare assembly generated by debug vs release and check that for yourself.
-Saurabh
|
|
|
|
|
Thanks Saurabh,
I have checked some functions there is no impact to release build of assembly code when we enable the "Assembly With Source Code" option. Is that correct?
regards,
George
|
|
|
|
|
George_George wrote: Is that correct?
Yes, because the C source code in the .asm file is a comment.
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
Thanks DavidCrow,
Question answered.
regards,
George
|
|
|
|
|
George_George wrote:
I find there is a new file named main.asm generated, do you mean that file?
Can you not open it and answer that question for yourself?
"Love people and use things, not love things and use people." - Unknown
"To have a respect for ourselves guides our morals; to have deference for others governs our manners." - Laurence Sterne
|
|
|
|
|
|
|
Thanks Sarath,
Is the option the same as C/C++ --> Assembly Output --> Assembly With Source Code option?
regards,
George
|
|
|
|
|
George_George wrote: Since in release mode, we can not set a breakpoint in Visual Studio 2008, so I can not stop at somewhere and see the Diassembly code.
Set the compiler and linker options to generate debug info for the release build. There is nothing to stop you doing this, in fact it's the first thing I do when setting up a new project.
Steve
|
|
|
|
|
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
|
|
|
|