RE: Strange behavior with dynamic code compilation and VS.NET debu

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



Mike,
Sorry to have been terse before. Ben Day suggested I take a look at this for
you.

I think someone else suggested that it was optimization related; I noticed
that the you'd turned off debugging in the generated assembly and noticed
that the results changed considerably.

Wanted to make you at least aware of that, since it did generate all the
exception information that way.

BTW--I find it easier to debug CodeDom related problems by having the
assembly written to disk and then executing it, so you can run it standalone
if appropriate.

Hope this helps.
Regards,
RHS

"Mike Miller" wrote:

> 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;
> > > }
> > > }
> > > }
.



Relevant Pages

  • Re: SBS 2003 BOSD (mrxdav.sys), Help Needed Please
    ... Cris Hanna [SBS - MVP] ... MVPs do not work for Microsoft ... Use!analyze -v to get detailed debugging information. ... exception record and context record. ...
    (microsoft.public.windows.server.sbs)
  • Re: Mixed assembly crashes on exit
    ... On the first development machine: I have now set debugging for both the ... I have tried setting breakpoints at various places in MINTERNAL.H. ... I have also tested this code on the 2nd development machine. ... there is an "Exception" message. ...
    (microsoft.public.vsnet.debugging)
  • Re: How to recover from a EXCEPTION_STACK_OVERFLOW?
    ... MiniDimp even if there has been an unhandled managed Exception. ... just-in-time debugging have been discussed in this newsgroup before, ... The registered custom Exception Filter calls MiniDumpWriteDump ... CreateProcess itself can fail because of corruption of the process' ...
    (microsoft.public.win32.programmer.kernel)
  • Re: False exceptions?" (was Re: theme of the week: tools
    ... First script I debug with Wing IDE I get ... I am debugging a script and debugging ... does not stop at the point where the exception is raised. ... the "useful exception related feature" makes me think of Bush's ...
    (comp.lang.python)
  • Re: Check if Function Exists
    ... a block would throw an exception without executing this block to begin with. ... The catch block's identifier is then bound to that new object. ... Because such optimization would be unobservable, it could not be shown to be non-complian. ... throw atom; ...
    (comp.lang.javascript)