Visual studio 2008 ne breaka na exceptionima

poruka: 17
|
čitano: 3.137
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
offline
Visual studio 2008 ne breaka na exceptionima

Ovako imam jedan problem koji ne znam riješit...

Naim Visual Studio 2008 (konkretno C#) mi ne breaka kad dođe exception.

Za test je slijedeći kod:

 List<string> lista = null;

 lista.Add("Test");

 

to pokrenem in ništa. Nikakav exception ne izleti. Kad pogledam u output windows (od vs 2008) piše:

A first chance exception of type 'System.NullReferenceException' occurred in WindowsFormsApplication1.exe

 

što je i u redu ali mi se ne pojavi nikakav dialog o grešci.

Exceptione ne hendlam, što znači da je to Unhandled exception.

 

U Debug=>Exceptions.. imam selektirano CLR Exceptions User-unhandled (kompletnu Common Language Runtime Exception grupu u kojoj se nalazi i System.NullReferenceException) dakle trebao bi break-at ali to ne radi.

 

Platforma je:

Windows Vista 64-bit

Visual Studio 2008 Team System

Resharper 4.1 instaliran.

 

 
0 0 hvala 0
17 godina
offline
Visual studio 2008 ne breaka na exceptionima

Čudno :S

 

Meni na Visti x64, bez resharpera sve radi normalno. Da se nije negdje sakrio neki "try"?

 
0 0 hvala 0
17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima

Nažalost, nije.

Evo probao sam ovo:

New project =>Windows Forms Application (da budem siguran da nema try-a)

 

private void Form1_Load(object sender, EventArgs e)
{
     List<string> lista = null;
     lista.Add("Test");
}

 

F5, i opet isto. Forma se prikaže, a ne bi smijela već bi trebao iskočit dialog sa greškom i break, međutim to se ne događa. I da naravno u output windowsu ide famozna poruka:

A first chance exception of type 'System.NullReferenceException' occurred in WindowsFormsApplication1.exe

 

Evo to sam isprobao i na drugom računalu, zajedničko imaju sve osim hardware-a, (znači Vista64, VS2008, Resharper 4.1) - isti se problem javlja.

 

 

17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima
Hellraiser kaže...

Nažalost, nije.

Evo probao sam ovo:

New project =>Windows Forms Application (da budem siguran da nema try-a)

 

private void Form1_Load(object sender, EventArgs e)
{
     List<string> lista = null;
     lista.Add("Test");
}

 

F5, i opet isto. Forma se prikaže, a ne bi smijela već bi trebao iskočit dialog sa greškom i break, međutim to se ne događa. I da naravno u output windowsu ide famozna poruka:

A first chance exception of type 'System.NullReferenceException' occurred in WindowsFormsApplication1.exe

 

Evo to sam isprobao i na drugom računalu, zajedničko imaju sve osim hardware-a, (znači Vista64, VS2008, Resharper 4.1) - isti se problem javlja.

 

 

 Probaj staviti u try, catch i pogledaj dal se uopće diže Exception ako je kod unutar try catcha. Mislim po svakoj logici bi se trebao.
Ako neće ni onda, onda probaj staviti iznad

lista.add("Test")

da ti vadi nešto iz liste

String nekaj = lista[1];

Pa ako ti ni onda ne baci exception, onda mora da je nešto u postavkama u Team ediciji Visual studia. Ja inače imam Profesional i radi sve to bez problema. Baca exception
AMD Phenom 9500, GA 790x DS4, RAM : 4 GB , ATI RADEON 4850, 750GB DISK SPACE, LOGITECH x540
17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima

ok..

 

        private void Form1_Load(object sender, EventArgs e)
        {
            List<string> lista = null;
            try
            {
                lista.Add("Luka");
                Debug.WriteLine(lista[0]);
            }
            catch (System.NullReferenceException exception)
            {
                throw(exception);
            }

 

Ne breaka!!! jedina razlika je što dva puta ispiše onu poruku u output window-u.

 

Napravio sam čistu instalaciju Windowsa Vista 64 i Visual Studia 2008 ali opet isto!!!

17 godina
neaktivan
offline
Visual studio 2008 ne breaka na exceptionima

Tools -> Options -> Debugging pa se malo poigraj time. Tamo ćeš sigurno naći što ti treba.

Nije mi jasno jedino zašto i kako ti se aplikacija ne sruši kod onakvog koda? Vrlo čudno i nemoguća situacija. Izvršiti onakav kod je nemoguće bez pucanja aplikacije.

Poruka je uređivana zadnji put sri 29.10.2008 10:06 (naxeem).
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima

Postavio sam sve iste postavke kao i na računalo koje radi....

Nije pomoglo.

Postavio sam

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework keyeve kao i na računalo na kojem radi.

Nije pomoglo.

Deinstalirao sam Vs 2008

Ponovo instalirao VS 2008

Nije pomoglo.

Instalirao sam VS 2008 SP1

nije pomoglo.

 

Ne znam šta više napravit!!!

 

17 godina
offline
Visual studio 2008 ne breaka na exceptionima

Instaliraj Visual C# Express, bilo koje verzije, i vidi radi li istu stvar.

 
0 0 hvala 0
17 godina
neaktivan
offline
Visual studio 2008 ne breaka na exceptionima

Prolazi ti primjer kroz kompilaciju? Buildao si ga za release i pokrenuo i nije se srušio?

Moj PC  
0 0 hvala 0
17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima

Ovaj isti Visual Studio radi na drugom kompu.

 

 

* Prolazi ti primjer kroz kompilaciju? Buildao si ga za release i pokrenuo i nije se srušio?

 

Prolazi, Znači Build, i compile prođe bez problema.

Startap aplikaciju u VS 2008 i forma se prikaže!!!!! Bez dialog o grešci. Kao da je JIT Debugger disable-an. (a nije)

Poruka se javlja u Output Windowu.

Setting od debugera su defaultni.

 

Još nešto..

Ako dodam na tu formu button i kod is Form load-a preselim na button. ovako:

 

private void Form1_Load(object sender, EventArgs e)
        {
              //nema više koda!!! preseljen je u Button1_click()
        }

        private void button1_Click(object sender, EventArgs e)
        {

            List<string> lista = null;
            lista.Add("Test");

        }

F5, pokrenem, forma se učita, kliknem na buton i OPA! evo ga dialog sa greškom (debugger je breakao).

Sad ja nadobudan išao opet vratit kod u Form1_Load..

 

private void Form1_Load(object sender, EventArgs e)
        {


            List<string> lista = null;
            lista.Add("Test");             
        }

        private void button1_Click(object sender, EventArgs e)
        {

            //nema više koda!!! preseljen je u Form1_Load()

        }

 

F5, pokrenem forma se otvori. Nema dialoga o grečci i opet ona poruka u Output Windowu!!!!.

 

Sad više stvarno ne razumijem šta se dešava.

 

 

17 godina
neaktivan
offline
Visual studio 2008 ne breaka na exceptionima

Molim te pokreni kompajliranu aplikaciju ručno, neovisno o VS-u. Trebala bi se srušiti mislim. Probaj sa devenv /resetuserdata. Ako ti ne attacha debugger, napravi to ručno. Probao si?

 

Moj PC  
0 0 hvala 0
17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima

Pokrenuo sam Applikaciju izvan VS i "srušila" se je.

Napravio sam devenv /resetuserdata i nakon toga ponovo u VS probao pokrenut aplikaciju i opet ne break-a na exceptionu.

I da probao sam ručno attachat debuger VS-a ali svejedno mi ne break-a na exception-u.

Formatirao sam HDD, instalirao Visu 64 na čisto.

Instalirao Visual Studio 2008, napravio novu Windows Forms Applikaciju i u form load stavio gornji kod.

Opet ista priča, ne break-a na exceptionu.

Znači nije problem u settinzima VS-a već nešto sa Vistom 64-bit jer u Visti 32-bit mi radi savršeno.

 

Poruka je uređivana zadnji put čet 30.10.2008 22:48 (Hellraiser).
17 godina
neaktivan
offline
Visual studio 2008 ne breaka na exceptionima

Nije do Viste 64... nešto jako čudno je. (Pogledaj sliku koju sam priložio!)

 

Jesi li dignuo login u administratorskoj grupi i imaš li isključen UAC?

Nije do Viste 64 :) Nije do Viste 64 :)
Moj PC  
0 0 hvala 0
17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima

OK,

Logiran sam kao Administrator (ne user account sa administrator privilegijama nego baš Administrator) makar sam probao kreirat novog usera sa privilegijama admina ali isto.

UAC je isključen.

 

Reproducirao sam tvoj kod i RADI!!!!

Ali Ako se vratim na moj kod, NE RADI!!

 

Znači... Ako stavim kod u Form1_Load(object sender, EventArgs e) mi ne break-a, ali ako pustim u FORM1() konstruktoru ili ga vežem na button, onda breaka.

Ne razumijem zašto ne break-a kad se kod nalazi u Form_Load() procedurei a u ostalima da....

 

 

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            List<string> lista = null;
            lista.Add("Test");    
        }

    }
}

 

17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima

OK Našao sam odgovor...

 

Problem je ipak u OS-u 64-bitnom.

Postao sam problem na Microsoft Connect i odgovorili su mi na post i poslali link na rješenje.

 

Uspostavilo se da je to BUG(da bug) u Komponent inicializaciji u 64-bitnim os-u, kod kojeg se pri form load-u (radi stabilnosti 64-bitne verzije) exception hendla (sillently) pri System.Windows.Forms.NativeWindow.AssignHandle i to:

this.windowProc = new NativeMethods.WndProc(WndProcShouldBeDebuggable ? this.DebuggableCallback : this.Callback);

 

Kaže da problem leži u tome što NativeWindow.Callback sadrži try..catch koi poziva OnThreadException (Koji prosljieđuje poziv na: Application.OnThreadException koi poziva prozor ThreadExceptionDialog)  u slučaju da dođe do exceptiona, dok NativeWindow.DebuggableCallback ne. Dakle ako je Debugger.IsAttached == true, NativeWindow.windowProc == NativeWindow.DebuggableCallback, skirva (sillently hendla) sve exceptione pri OnLoad.

 

Riješenje je uključiti Throw exception u Debugger=>Exceptions

 

Uglavnom evo linka sa riješenjem:

https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=357311

 

Problem je u tome što ni u VS2008 SP1 problem nije riješen!!!

17 godina
neaktivan
offline
Visual studio 2008 ne breaka na exceptionima

Jako interesantno. Probao sam na VM-u i dešava se isto u 2003 64 bitnom. Izgleda da je bug u načinu na koji se to izvodi kao što su i rekli.

U svakom slučaju, zabavan problem iako mi se rješenje čini kao potrebno za default, a ne opcionalno. Na thrown exceptione trebali bi isto dizati dijalog...

Moj PC  
0 0 hvala 0
17 godina
offline
RE: Visual studio 2008 ne breaka na exceptionima

istina npr.

void Form1_Load(...)

{

   throw new InvalidOperationException();

}

 

ne break-a!!! mislim imaju ozbiljan problem, a još nisu izdali hotfix za njega!!! nego netko mora izgubit nekoliko dana za problem kojeg uopče nije trebalo bit.

 

 

1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice