RE: Strange behavior with dynamic code compilation and VS.NET debu
- From: "Mike Miller" <MikeMiller@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Thu, 5 Jan 2006 20:23:05 -0800
So the behavior is suppose to be different??? This doesn't make any sense -
so when I compile with debugging information I get different behavior then
when I compile without it? Isn't optimization a change in performance, not
behavior? Thanks for the response, I guess what I am getting at is how does
one troubleshoot optimized code if when you debug it the problem disappears?
Maybe we should go back to using lots of write lines instead of the debugger
;)
"Richard Hale Shaw (C# MVP)" wrote:
> Try changing the following line (change "false" to "true"):
>
> compilerParameters.IncludeDebugInformation = true;
>
> And you'll get the usual exception information when the program aborts.
> Regards,
> RHS
>
>
> "Mike Miller" wrote:
>
> > When I run the following code I would suspect a null reference exception to
> > be thrown:
> >
> > param1 = null;
> > int x = param1.Length;
> >
> > However, when I compile this code dynamically into a class and method a null
> > reference exception is ONLY thrown if the debugger is attached???? Otherwise
> > no exception is thrown. Can someone please explain this? I included the
> > code below - create a console application and overwrite the existing class
> > with the code below.
> >
> > CODE TO REPRODUCE:
> >
> > using System;
> > using System.CodeDom.Compiler;
> > using System.Reflection;
> > using Microsoft.CSharp;
> >
> >
> > namespace ConsoleApplication1
> > {
> > class Program
> > {
> > static void Main(string[] args)
> > {
> > Assembly a = CreateAssembly();
> > object o = a.CreateInstance("ConsoleApplication1.TestClass");
> > MethodInfo info = o.GetType().GetMethod("RunMe");
> > info.Invoke(o, new object[] { null });
> > }
> >
> > private static Assembly CreateAssembly()
> > {
> > string src = @"
> > namespace ConsoleApplication1
> > {
> > using System;
> >
> > public class TestClass
> > {
> > public virtual void RunMe(string param1)
> > {
> > int x = param1.Length;
> > }
> > }
> > }";
> >
> > CodeDomProvider provider = new CSharpCodeProvider();
> > CompilerParameters compilerParameters = new CompilerParameters();
> > compilerParameters.GenerateInMemory = true;
> > compilerParameters.IncludeDebugInformation = false;
> > compilerParameters.GenerateExecutable = false;
> >
> > CompilerResults results =
> > provider.CompileAssemblyFromSource(compilerParameters,
> > src);
> >
> > return results.CompiledAssembly;
> > }
> > }
> > }
.
- Follow-Ups:
- RE: Strange behavior with dynamic code compilation and VS.NET debu
- From: Richard Hale Shaw (C# MVP)
- RE: Strange behavior with dynamic code compilation and VS.NET debu
- References:
- RE: Strange behavior with dynamic code compilation and VS.NET debuggin
- From: Richard Hale Shaw (C# MVP)
- RE: Strange behavior with dynamic code compilation and VS.NET debuggin
- Prev by Date: Re: I have 2 versions of .NET, which is being used
- Next by Date: StreamWriter.Close() in Windows Service leaves handles
- Previous by thread: RE: Strange behavior with dynamic code compilation and VS.NET debuggin
- Next by thread: RE: Strange behavior with dynamic code compilation and VS.NET debu
- Index(es):
Relevant Pages
|