Some time ago I've read an article on CLR, where author showed that if a project is compiled in DEBUG mode, before each operator comes a NOP command, thus allowing to debug a code. Nevertheless, today I discovered that we can also debug in release mode as well... Please help to understand the difference.
A 'release' build can be debugged.
The release configuration of your program has no symbolic debug information and is fully optimized. For managed code and C++ code, debug information can be generated in . pdb files, depending on the compiler options that are used.
You can then put a breakpoint on that int declaration line, and it'll be hit, even in release mode. Then just step up the stack in the debugger back to the function you actually wanted a breakpoint in.
Debugging .net code so that you can step through the source code while it is executed usually requires three things:
Symbols are controlled by the /debug:{full | pdbonly} flag. If you specify /debug:full
(even in a release build, with compiler optimizations turned off) you may attach to an already running process and step through code. If you have /debug:pdbonly
, then you must use the debugger to start the program (and cannot view symbols when attaching to an already running process).
Optimization is controlled granularly by the /debug compiler option, but can be further controlled by the /optimize-.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With