I inserted two temp variables and want to see their values, but I can't. I could solve it by placing it somewhere else, but I'm interested why this behaviour exists.
public float Value
{
get
{
float result = Memory.ReadFloat(Address);
double Radian = Math.Round(result, 2); // **BREAK POINT HERE**
double Degree = Math.Round(Math.Round((double)(result * 180 / Math.PI)), 2); // **BREAK POINT HERE**
return result; // **BREAK POINT HERE**
}
}
I break on all three points, but I can't get Visual Studio 2012 to show me the values. Only result will show up on the locals window, there is no variable called Radian or Degree.
If I add a watch for Radian variable for example, I get this message with a red cross icon:
Radian - The name 'Radian' does not exist in the current context
It's possible the local variables have been optimised away by the JIT compiler. Since you're using Visual Studio you might be able to switch the configuration to Debug and rebuild.
If not, you can configure the JIT compiler to disable optimisations and generate tracking information - see here on how to set the configuration. This should allow you to see local variable when you attach the debugger to the process.
I've encountered another scenario in VS2012 that causes variables to "disappear" while in debug mode:
make sure you don't have this:
if(false)
{
.
}
else
{
//Code here will be optimized and variables will not be available.
}
If you are trying to debug in a release build (release mode instead of debug mode), you'll get this error. Change your solution configuration to Debug (Any CPU) and you'll be able to see variable values in the immediate window.
I changed my Solution Configuration to Debug (Any CPU) but that wasn’t the problem. After upgrading to Visual Studio 2017 I thought I was in Debug but there was one more simple (but important) step. (And it’s probably obvious to most, but I missed it.) Where “Solutions Configurations” is set to “Debug” I had to ALSO click the down arrow next to “Debug” and select “Configuration Manager…” and then in that corresponding popup window “Configuration” was still set to “Release” – I had to change that to “Debug” and click the “Close” button. Rerunning from there allowed me to view all variables while debugging.
I had a .NET Standard project, and what worked for me was to go:
- Project properties.
- Build tab.
- Advanced button (all the way at the bottom-right).
- Change the "Debugging information" option to full.
It had been set to "Portable". Changing it to "Full" allowed me to see variables in Watch and Immediate windows again.
Not sure if it it's relevant, but I had recently converted the project from PCL to .NET Standard. Maybe something got lost in translation.