chyba aplikace při spuštění "Object not set..."   zodpovězená otázka

VB.NET

Aplikace vytvořená a zkompilovaná ve VS 2005 na PC WIN xp x64, 0 errors. Framework 2.0. Na tomto PC aplikace běhá bez chyb.

Při spuštění na pc WIn XP x32 (jiné PC s WIN XP x64 nemam, chyba ani nemusí souviset s x64),také Framework 2.0, potřebné knihovny Frameworku jsou nainstalované, hlasí vyjímku při startu:

Dialog chyby:

záhlaví-Microsoft .NET Framework

Unhandled exception has occurred your application. If.....

Object refererence not set to an instance of an object

Vyjímka se dá ignorovat a aplikace funguje, jak vyjímku odstranit..?

Vygooglil jsem něco ohledně vytvoření config souboru aplikace a přidání parametru:

<configuration>

<system.windows.forms jitDebugging="true" />

</configuration>

Moudrej z toho nejsem, nestačí pouze nějaké zaškrtávátko ve VS? Nebo něco co mi nevytvoří další soubor?

Děkuji za každou radu..

Details:

See the end of this message for details on invoking

just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************

System.NullReferenceException: Object reference not set to an instance of an object.

at CATIA_RUNer.Form1.Form1_Load(Object sender, EventArgs e)

at System.EventHandler.Invoke(Object sender, EventArgs e)

at System.Windows.Forms.Form.OnLoad(EventArgs e)

at System.Windows.Forms.Form.OnCreateControl()

at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)

at System.Windows.Forms.Control.CreateControl()

at System.Windows.Forms.Control.WmShowWindow(Message& m)

at System.Windows.Forms.Control.WndProc(Message& m)

at System.Windows.Forms.ScrollableControl.WndProc(Message& m)

at System.Windows.Forms.ContainerControl.WndProc(Message& m)

at System.Windows.Forms.Form.WmShowWindow(Message& m)

at System.Windows.Forms.Form.WndProc(Message& m)

at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

************** Loaded Assemblies **************

mscorlib

Assembly Version: 2.0.0.0

Win32 Version: 2.0.50727.42 (RTM.050727-4200)

CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll

----------------------------------------

CATIA RUN-er

Assembly Version: 1.0.0.0

Win32 Version: 1.0.0.0

CodeBase: file:///C:/Documents%20and%20Settings/jkoci/Plocha/CATIA%20RUN-er.exe

----------------------------------------

Microsoft.VisualBasic

Assembly Version: 8.0.0.0

Win32 Version: 8.0.50727.42 (RTM.050727-4200)

CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0b03f5f7f11d50a3a/Microsoft.VisualBasic.dll

----------------------------------------

System

Assembly Version: 2.0.0.0

Win32 Version: 2.0.50727.42 (RTM.050727-4200)

CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0b77a5c561934e089/System.dll

----------------------------------------

System.Windows.Forms

Assembly Version: 2.0.0.0

Win32 Version: 2.0.50727.42 (RTM.050727-4200)

CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0b77a5c561934e089/System.Windows.Forms.dll

----------------------------------------

System.Drawing

Assembly Version: 2.0.0.0

Win32 Version: 2.0.50727.42 (RTM.050727-4200)

CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0b03f5f7f11d50a3a/System.Drawing.dll

----------------------------------------

System.Runtime.Remoting

Assembly Version: 2.0.0.0

Win32 Version: 2.0.50727.42 (RTM.050727-4200)

CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0b77a5c561934e089/System.Runtime.Remoting.dll

----------------------------------------

System.Management

Assembly Version: 2.0.0.0

Win32 Version: 2.0.50727.42 (RTM.050727-4200)

CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Management/2.0.0.0b03f5f7f11d50a3a/System.Management.dll

----------------------------------------

************** JIT Debugging **************

To enable just-in-time (JIT) debugging, the .config file for this

application or computer (machine.config) must have the

jitDebugging value set in the system.windows.forms section.

The application must also be compiled with debugging

enabled.

For example:

<configuration>

<system.windows.forms jitDebugging="true" />

</configuration>

When JIT debugging is enabled, any unhandled exception

will be sent to the JIT debugger registered on the computer

rather than be handled by this dialog box.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

nemáte zde v této metodě:

CATIA_RUNer.Form1.Form1_Load(Object sender, EventArgs e)

nějaký kód, kde by byla nějaká neiiniciovaná proměná?

nahlásit spamnahlásit spam 0 odpovědětodpovědět
Private Sub Bkill_Click_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bkill.Click
        Dim Message As String = "Opravdu chceš zabít procesy týkající se CATIE?"
        Dim Caption As String = "Potvrzení"
        Dim Buttons As MessageBoxButtons = MessageBoxButtons.YesNo

        Dim Result As DialogResult
        'Displays the MessageBox
        Result = MessageBox.Show(Message, Caption, Buttons)
        ' Gets the result of the MessageBox display.

        If Result = DialogResult.Yes Then
            Dim Uspech As Boolean = ZabProces("CNEXT")

            If Not Uspech Then
                MessageBox.Show("Žádný proces", "Chyba", _
                MessageBoxButtons.OK, MessageBoxIcon.Warning)
            End If

        End If

    End Sub

Jediné varování na formu tady v Bkill_Click_1 u DialogResult.Yes.

Warning:

Access of shared member, constant member, enum member or nested type through an instance; qualifying expression will not be evaluated. Přitom je to přebrané z nápovědy.

Jinde žádné varování. Ve Form1_load se načítají funkce z modulu, ale nikde žadné varovaní natož errory, beru že všechny proměnné jsou nainiciované správně.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

I bez toho, aby k tomu bylo varování může tato chyba nastat. Varování je pouze upozornění na evidentní chyby. Podle stacku vznikla chyba v metodě Form1_Load. Napište kód co v ní je.

Očividně používáte něco, co na nevývojářské stanici není nainstalované.

Vykompilujte si kód v režimu Debug a ten tam spusťte, zobrazí se vám alespoň i číslo řádku.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Zjistit chybu na konkr. řádku to bych bral, akorát VS nemam moc zmáknuté.

"Vykompilujte si kód v režimu Debug". Jak se to provádí, kde se co nastavuje?

Dík za rady

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Spusťte si aplikaci přímo z VS a pokud nastane chyba, zastaví se vám zpracovávání kódu a zobrazí se vám okno s chybovým hlášením. V něm objevíte podrobný textový výpis chyby (jako jste uvedl na ukázku) a to navíc včetně řádku kde vznikla (tedy přímo v kodu ve studiu).

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na vyvojářském PC s VS 2005 to žádnou vyjímku nevyhodí...Vyjímku a její výpis jsem udělal na jiném PC pouze s Framworkem 2.0, kde nemám VS. Z předešlé odpovědi jsem pochopil že jiným způsobem kompilace získam jednoznačný popis chyby k jedn. řádku kódu právě na nevyvojářské stanici.

Pokud se jedná o Solution Configuratin Debug nebo Release, tak Debug jsem doteď dělal bez vyjímky, protože o jiném způsobu kompilace jsem neměl ponětí. V ukázce je právě výpis Debug.

p.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ve VB.NET je narozdíl od C# ve výchozím stavu zapnut zjednodušený systém kompilace takže se automaticky vytváří jak Debug verze (ve složce bin\Debug) tak Release verze (bin\Release). Důležité pro ladění jsou hlavně debug symboly (*.pdb), které je potřeba mít ve stejné složce jako exe a dll. Potom by součástí výpisu chyby mělo být i Stack Trace včetně názvu zdrojového souboru a řádku na kterém chyba vznikla.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Rozhodně užitečné info.. Zkoušel jsem samozřejmě bez přítomnosti *.pdb.

Příště budu chytřejší a dopátrám se mnohem rychleji.

Metodou postupného odpoznámkování kódu ve form_load jsem našel botu. V ošetřování chyb mam pořád velkou slabinu.

if ArrLic.lenght > 0 then

opraveno na:

If Not ArrLic Is Nothing Then

Už to frčí.

Děkuji všem za čas a mnoho užitečných rad.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Místo If Not x Is Nothing je doporučeno používat k tomu určený operátor IsNot: If x IsNot Nothing...

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

zdravím forum, zase to ladění.

1.

Kde naleznu zminovany konfigurační soubor, viz nize? Případně zaškrtávátko pro povolení ladění ve VS?

2.

Má někdo zkušenost s používáním VS 2005 v XP modu pod WIN7? Porad mi to drží nějaký proces a nedovolí opakované přehrávání kodu. Nutný neustalý restart VS.

************** Ladění JIT **************

Aby bylo povoleno ladění JIT, musí konfigurační soubor

pro tuto aplikaci nebo počítač (machine.config) mít

v oddílu system.windows.forms nastavenou hodnotu njitDebugging.

Aplikace rovněž musí být kompilována s povoleným

laděním.

Příklad:

<configuration>

<system.windows.forms jitDebugging="true" />

</configuration>

Je-li ladění JIT povoleno, budou všechny neošetřené výjimky

odeslány ladicímu programu JIT, který je registrován v počítači,

a nebudou zpracovány tímto dialogovým oknem.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Proč používáte Visual Studio v režimu kompatibility? Neumíte snad najít soubor pomocí hledání?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diky za užitečné rady...-)

1.

machine.config se mi podařilo nalézt na cestách:

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Config

2.

Proč používám VS v režimu kompatibility.

a)

přijde mi, že VS poměrně zatíží OS (registry, knihovny apod.), používám ho poměrně málo, tak ho mam instalovane na virtuálním PC.

b)

tvořím primárně aplikace pro WIN XP

Právě kvůli uváděným disfunkcím přejdu pod WIN7. XP mode to je spíš nouzovka, potřebuju kvuli tisku (starší tiskarna nemam ovladače ani pro visty natož 7)

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback