AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Exception _vor_ dem Starten meines Programmes
Thema durchsuchen
Ansicht
Themen-Optionen

Exception _vor_ dem Starten meines Programmes

Offene Frage von "berens"
Ein Thema von berens · begonnen am 5. Sep 2007 · letzter Beitrag vom 5. Sep 2007
Antwort Antwort
berens

Registriert seit: 3. Sep 2004
431 Beiträge
 
Delphi 2010 Professional
 
#1

Exception _vor_ dem Starten meines Programmes

  Alt 5. Sep 2007, 15:26
Hi!

Ich ziehe die Probleme mal wieder magisch an...

Neuerdings kommt schon vor der ersten Zeile meines Programmes eine Exception, und zwar beim Initialisieren der Units (Unit System, Prozedur InitUnits, siehe unten).

Ich habe in all meinen Units mit 'initialization' einen Haltpunkt in die erste Zeile nach selbingen gesetzt, aber die Exception kommt noch bevor der erste Haltpunkt erreicht wird. Ggf. also eine Exception in einer Fremdunit. Die Frage ist nun: welche Unit verursacht das Problem? Insgesamt (laut der Variable "Count", s.u.) werden ~486 Units geprüft, ob sie initialisiert werden müssen.

Erschwerend kommt hinzu, dass Delphi (weil ich es wohl mal aus versehen angehakt habe) bis eben nicht bei einer AccessViolation angehalten hat; somit kann ich weder sagen, seit wann ich das Problem tatsächlich habe (bisher wurde ja einfach nur keine Fehlermeldung angezeigt), noch welche Unit in diesem Zeitraum neu dazu gekommen sein könnte.

Kann man von dem Pointer auf die Unit auf den Unitnamen schließen? Was kann ich tun? *help*

Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt bla.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Access violation at address 00520424 in module 'bla.exe'. Read of address 0000E3BD' aufgetreten.
---------------------------
Anhalten Fortsetzen Hilfe
---------------------------
Delphi-Quellcode:
procedure InitUnits;
unit System;
// ...
var
  Count, I: Integer;
  Table: PUnitEntryTable;
  P: Pointer;
begin
  if InitContext.InitTable = nil then
    exit;
  Count := InitContext.InitTable^.UnitCount;
  I := 0;
  Table := InitContext.InitTable^.UnitInfo;
{$IFDEF LINUX}
  Inc(Cardinal(Table), InitContext.Module^.GOT);
{$ENDIF}
  try
    while I < Count do
    begin // <-- hier Exception ----------------------------
      P := Table^[I].Init;
      Inc(I);
      InitContext.InitCount := I;
      if Assigned(P) then
      begin
{$IFDEF LINUX}
        CallProc(P, InitContext.Module^.GOT);
{$ENDIF}
{$IFDEF MSWINDOWS}
        TProc(P)();
{$ENDIF}
      end;
    end;
  except
    FinalizeUnits;
    raise;
  end;
end;
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: Exception _vor_ dem Starten meines Programmes

  Alt 5. Sep 2007, 15:33
Falls die Fremdunits als debugbar vorliegen, könntest du versuchen, den geposteten Code auf Assembler-Niveau durchzusteppen (statt wie üblich Pascal-Niveau). Das ist zwar aufwändiger, aber dort kriegst du bei jedem Sprung in eine Methode auch gleich deren Unit (falls Debuginfos vorliegen) frei Haus geliefert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz