AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Debuggen im CPU Fenster

Ein Thema von harrybo · begonnen am 26. Nov 2002 · letzter Beitrag vom 2. Feb 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#1

Debuggen im CPU Fenster

  Alt 26. Nov 2002, 20:18
Hallo,

nachdem ich auf Windows XP umgestiegen bin, lösen meine Programme jedesmal eine Exception aus, wenn ich das Programm schließe. Der Effekt tritt nur auf, wenn das Prg von der IDE aus gestartet wird. Als Verantwortlichen konnte ich die Komponente TdxBarManager von Developer Express ausmachen (das Problem kann dort nicht reproduziert werden).

Soweit ich das mit normalem Debugging verfolgen konnte, wird sämtlicher Code bis zum "end." des Projekt-Codes ohne Probleme abgearbeitet. Wenn ich dort einen Breakpoint setze, und mit Einzelschritt durch den Source gehe, lande ich in "HelpIntfs". Dort geht es dann in die folgenden letzten Zeilen:

Code:
initialization
finalization
  if Assigned(HelpManager) then HelpManager := nil;
end.
Nach Abarbeitung des "end." erscheint das CPU Fenster (der Source o.a. Komponente ist vorhanden und auch korrekt eingetragen). Die Meldung der Exception lautet:

In Projekt D:\Projekte Delphi\Sample.exe trat ein Problem mit folgender Meldung auf: 'Anwendungsdefinierte Excpetion (Code 0xc0000008) bei 0x77f410a2'. Prozeß angehalten. Mit Einzelne Anweisung oder Start fortsetzen.

Weiß jemand, mit welchen Mitteln ich das Problem lokalisieren bzw. lösen kann?

Gruß, harrybo
Harry Boldt
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2
  Alt 26. Nov 2002, 20:23
Hi,
was ist denn HelpInfts? Ober besser gesagt "Help-Manager"?
Ich kann sonst keinen Fehler finden (vielleicht solltest du noch ein wenig mehr Source zeigen)...

Chris
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 26. Nov 2002, 20:34
Moin Harrybo,

sollte es sich bei "Helpmanager" um ein Objekt handeln, müsste dieses mit

Delphi-Quellcode:
Helpmanager.Free;
Helpmanager := nil;

// bzw.

FreeAndNil(Helpmanager);
freigegeben werden.

Ansonsten ist, zumindest in dem von Dir gezeigten Codeabschnitt kein Fehler auszumachen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#4
  Alt 26. Nov 2002, 23:55
Hallo Chris, hallo Chris,

erst mal danke für Eure prompte Antwort. Ich würde gerne mehr Code zeigen, allein es gibt ja keinen. Ich kann einen Breakpoint im Quellcode des Projekts auf die letzte Zeile, also "end." setzen.

Code:
program Project1;

uses
  Forms,
  sample in 'sample.pas' {frmSample};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TfrmSample, frmSample);
  Application.Run;
end. // hier Breakpoint gesetzt
Verlasse ich das Programm, hält der Debugger dort ordnungsgemäß. Beim Weiter steppen (F7) konnte ich dann sehen, dass noch Code aus HelpIntf.pas abgearbeitet wird, weiß aber mittlerweile, dass hier alles in Ordnung ist und erst später an anderer Stelle die Exception ausgelöst wird - allerdings liegt dazu kein Code vor, so dass das CPU Fenster aufpoppt. Den Pfad $Delphi\Source\Vcl habe ich testweise eingebunden, ohne Erfolg. Gibt es eine Möglichkeit, herauszubekommen, wo, z.B. in welcher Unit, das Problem auftritt?

gruß, harrybo
Harry Boldt
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5
  Alt 27. Nov 2002, 13:07
Moin Harrybo,

hast Du denn auch mal versucht, das Objekt korrekt freizugeben?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#6
  Alt 27. Nov 2002, 23:22
Tschuldige Chris, habe ich vergessen, zu erwähnen. Ich habe das natürlich gleich getestet, ohne Erfolg allerdings. Ich habe dann die Pfade zu den Sources von Delphi und den von mir verwendeten Komponenten im Bibliothekspfad eingetragen, und bin beim Debuggen dann über die HelpIntfs.pas hinaus in andere Units gekommen gekommen. Dort werden die erzeugten Objekte ebenfalls korrekt freigegeben. Ich denke mittlerweile, dass die Exception keine Delphi- sondern eine Win-Exception ist, ich mich also bereits in Windows Code befinde.

Vielleicht hat ja noch jemand eine Idee - ich melde mich auf jeden Fall, sobald ich das Problem gelöst habe.

gruß, harrybo
Harry Boldt
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#7
  Alt 27. Nov 2002, 23:32
Moin Harrybo,

der Fehler sagt ja aus: ERROR_NOT_ENOUGH_MEMORY
Das einzige was mich an der Fehlermeldung ein wenig stört, ist die Meldung "Anwendungsdefiniert".

und die Adresse liegt im Bereich der geladenen System DLLs (vermutlich Kernel32.dll)
Vielleicht kommst Du weiter, wenn Du von vorn herein im CPU Fenster debuggst (STRG-ALT-C). Dann könntest Du sehen, bei Aufruf welcher API Funktion der Fehler auftritt.

Übrigens, mal unabhängig vom auftretenden Fehler:
Durch die Zuweisung von nil lässt sich ein Objekt nicht freigeben.
Free oder FreeAndNil ist erforderlich.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von harrybo
harrybo

Registriert seit: 26. Nov 2002
Ort: Aachen
87 Beiträge
 
Delphi 6 Enterprise
 
#8
  Alt 28. Jan 2003, 16:18
hat ne Weile gedauert, aber ich hab's rausgefunden - mit MemProof (http://www.automatedqa.com/downloads/memproof.asp) Ein Download lohnt sich für die, die sichergehen wollen, dass die Applikation benutzten Speicher auch wieder sauber frei gibt, oder wenn eben solche seltsamen Abstürze beobachtet werden. Das Produkt ist noch kostenlos erhältlich.

Mein Programm lädt die "c:\Windows\System32\AvmSnd.dll", die zur Installation der AVM Fritz Card gehört. Warum diese Datei geladen wird, und vor allem von wem, ist mir noch nicht klar. Auch andere hatten, so Google, bereits Probleme mit dieser Datei, die möglicherweise fehlerhaft ist. Zumindest ist das Problem beseitigt, sobald die dll umbenannt wird.

Dies der Vollständigkeit halber.

gruß, harrybo
Harry Boldt
  Mit Zitat antworten Zitat
Stressi

Registriert seit: 6. Jun 2003
4 Beiträge
 
#9

Re: Debuggen im CPU Fenster

  Alt 30. Jan 2004, 12:26
Hi

Das gleiche Problem habe (hatte) ich auch, dank deiner Hilfe hab ich´s nu nich mehr, weist du schon warum die AVMSND.DLL geladen wird ?
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)
Online

Registriert seit: 25. Jun 2002
Ort: Hausach
7.639 Beiträge
 
#10

Re: Debuggen im CPU Fenster

  Alt 30. Jan 2004, 13:12
Ich glaubem das gleiche Problem habe ich auch.

Der Debugger von Delphi3 Prof. scheint auch darin 'hängen' zu bleiben, wenn man ein Programm welches aus der IDE gestartet wurde beendet: Der Objektinspektor kommt nicht mehr zum vorschein und obwohl alles den anschein hat, daß man nicht mehr im Runtime-Modus ist kiommt die Meldung der Debugger sei noch aktiv, wenn man Delphi beenden will.

Komischerweise tritt der Fehler erst seit kurzem auf (hatte das Problem bisher noch nicht). Allerdings wurden die Fritz! - Treiber und die entsprechende Software seit längerem nicht mehr aktualisiert.

Könnte sich hier ggf. ein Virus / Wurm / Trojaner als diese Fritz-DLL ausgeben? Zumal sie sich anscheinend vom Entwickler unbeabsichtigt einhängt.

Hagen: Ne idee?
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 13:29 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