Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Herausfinden in welcherquellcodezeile programm ist (https://www.delphipraxis.net/22943-herausfinden-welcherquellcodezeile-programm-ist.html)

SirThornberry 26. Mai 2004 16:44


Herausfinden in welcherquellcodezeile programm ist
 
Hallo und sorry wegen dem Betreff aber ich weiß nicht wie ich es besser beschreiben soll.

Nach ca. 48 Stunden dauertest hat sich mein Programm aufgehangen ohne eine Fehlermeldung. Ich hab den Verdacht das in irgend einer Schleife festhängt. Wie finde ich raus in welcher Zeile des Sources gerade ausgeführt wurde also an welcher Stelle das Programm derzeit hängt und eine endlosschleife ausführt? (ich kann nicht in jeder quellcodezeile einen haltepunkt setzen da dies ewig dauern würde bei den unmengen an Quellcode)

Bin am verzweifeln.. :cry:

r_kerber 26. Mai 2004 16:47

Re: Herausfinden in welcherquellcodezeile programm ist
 
Hallo SirThornberry,

protokolliere doch einfach vor und nach der jeweiligen Schleife, dann merkst Du, wo das Programm hängen bleibt!

Luckie 26. Mai 2004 16:48

Re: Herausfinden in welcherquellcodezeile programm ist
 
Hm, kuck mal in der Hilfe nach Assert.

SirThornberry 26. Mai 2004 17:05

Re: Herausfinden in welcherquellcodezeile programm ist
 
@r_kerber: Ich weiß ja absolut nicht wo das Programm hängt.
@Luckie & All: Ich dachte es gibt vielleicht irgend ein Debugwindow oder so mit dem ich das feststellen kann (eventuell Einzelschrittanweisung während das Programm läuft starten). Etwas in den Quelltexte einfügen ist schlecht weil der fehler ja wie erwähnt erst nach ca 48 Stunden auftrat und somit steht nicht fest das er in 48 stunden wieder auftritt. Ich habe das Programm immer noch im Debugger (Delphi IDE) laufen in der hoffnung das es noch eine möglichkeit gibt herauszufinden an welcher stelle das programm gerade hängt

Luckie 26. Mai 2004 17:09

Re: Herausfinden in welcherquellcodezeile programm ist
 
Beobachte mal den Speicherverbrauch. Eventuell geht deinem Programm nur der Speicher aus, weil du irgenwelche Objekte nicht wieder frei gibst. Oder jag dein Programm mal durch MemProff oder wie das heißt, um speicherlecks zu finden.
Ein Speicherkiller ist es auch, wenn man ein dynamisches Array immer nur um ein element vergrößert.

r_kerber 26. Mai 2004 17:10

Re: Herausfinden in welcherquellcodezeile programm ist
 
Was passiert, wenn Du im Debuger das Programm anhältst? Dann sollte der Marker doch auf eine Zeile innerhalb der Endlosschleife zeigen, oder?

SirThornberry 26. Mai 2004 17:12

Re: Herausfinden in welcherquellcodezeile programm ist
 
@Luckie: Array hab ich gar keine also kanns daran nicht liegen. Und sonstige speicherlegs sollten auch nich da sein.
Speicherauslastung ist bei 5548 und Virtueller Speicher ist bei 24.120, ist also im üblichen Bereich (so wie beim start vor 2 Tagen)

SirThornberry 26. Mai 2004 17:15

Re: Herausfinden in welcherquellcodezeile programm ist
 
also wenn ich auf pause klicke kommt inzwischen "Delphi is allready stopping this process. This will terminate this process. OK CANCEL"
beim ersten klick auf diesen button kam keine solche Meldung aber auch kein haltepunkt an einer bestimmten stelle

generic 27. Mai 2004 10:14

Re: Herausfinden in welcherquellcodezeile programm ist
 
ich sach nur jcl, die debug units sind lustig.

da komm dann solche logs raus:
Code:
Zugriffsverletzung bei Adresse 00403F7A in Modul 'faxmanager.exe'. Lesen von Adresse 454D414E.

Exception class: EAccessViolation
Exception address: 00403F7A
----------------------------------------------------------------------------------------------------
Stack list, generated 26.05.2004 13:36:44
[00403F7A] System.TObject.InheritsFrom + $2
[00404261] System.@HandleAnyException + $35
[0045662B] Controls.TControl.WndProc + $18B
[00403EEB] System.@IsClass + $13
[00447E8C] ExtCtrls.TImage.GetCanvas + $AC
[00447ED2] ExtCtrls.TImage.GetCanvas + $F2
[0050B531] u_Stempel.TStempel.CalcHeight (Line 117, "u_Stempel.pas" + 1) + $8
[0050B681] u_Stempel.TStempel.CalcHeight (Line 128, "u_Stempel.pas" + 12) + $31
[00421EBF] Classes.TStrings.SetTextStr + $B3
[0050C52F] u_Stempel.TStempel.SetText (Line 454, "u_Stempel.pas" + 4) + $0
[00552AB6] ufr_Bild.Tframe_Faxe.SaveStempelText (Line 778, "ufr_Bild.pas" + 3) + $0
[00552C9B] ufr_Bild.Tframe_Faxe.SaveStempelText (Line 798, "ufr_Bild.pas" + 23) + $28
[00404D34] System.@LStrFromPCharLen + $28
[00409927] SysUtils.Trim + $2F
[00554224] uf_stempeltool.Tfrm_stempeltoolwin.edt_TextExit (Line 158, "uf_stempeltool.pas" + 3) + $43
[00554242] uf_stempeltool.Tfrm_stempeltoolwin.edt_TextExit (Line 158, "uf_stempeltool.pas" + 3) + $61
[0045A497] Controls.TWinControl.DoExit + $1B
[0045AF5A] Controls.TWinControl.CMExit + $A
[0045662B] Controls.TControl.WndProc + $18B
[00459748] Controls.TWinControl.DefaultHandler + $DC
[0045A439] Controls.TWinControl.ResetIme + $89
[00459664] Controls.TWinControl.WndProc + $15C
[0045662B] Controls.TControl.WndProc + $18B
[004592DF] Controls.TWinControl.MainWndProc + $2F
[004592F7] Controls.TWinControl.MainWndProc + $47
[00429CCA] Classes.StdWndProc + $16
[0046D7D9] Forms.SendFocusMessage + $15
[00471C6C] Forms.TCustomForm.SetFocusedControl + $184
[00471D58] Forms.TCustomForm.SetFocusedControl + $270
[00459571] Controls.TWinControl.WndProc + $69
[0044050B] StdCtrls.TCustomCombo.WndProc + $107
[00441612] StdCtrls.TCustomComboBox.WndProc + $42
[004592DF] Controls.TWinControl.MainWndProc + $2F
[004592F7] Controls.TWinControl.MainWndProc + $47
[00429CCA] Classes.StdWndProc + $16
[00459748] Controls.TWinControl.DefaultHandler + $DC
[004568BC] Controls.TControl.WMLButtonDown + $18
[004415A3] StdCtrls.TCustomComboBox.WMLButtonDown + $4B
[0045662B] Controls.TControl.WndProc + $18B
[004594C8] Controls.TWinControl.IsControlMouseMsg + $54
[00459664] Controls.TWinControl.WndProc + $15C
[0044050B] StdCtrls.TCustomCombo.WndProc + $107
[00441612] StdCtrls.TCustomComboBox.WndProc + $42
[004592DF] Controls.TWinControl.MainWndProc + $2F
[004592F7] Controls.TWinControl.MainWndProc + $47
[00429CCA] Classes.StdWndProc + $16
[004768D0] Forms.TApplication.ProcessMessage + $88
[00476907] Forms.TApplication.HandleMessage + $F
[00476B27] Forms.TApplication.Run + $9B
[00476B6A] Forms.TApplication.Run + $DE
[00590FF2] FaxManager.FaxManager (Line 109, "E:\work\FaxManager2\FaxManager.dpr" + 44) + $0
[0059102C] FaxManager.FaxManager (Line 111, "E:\work\FaxManager2\FaxManager.dpr" + 46) + $2E
----------------------------------------------------------------------------------------------------
System  : Windows 2000 Professional, Version: 5.0, Build: 893, "Service Pack 4"
Processor: AMD, AMD Duron(tm) Processor, 850 MHz MMX
Display : 1024x768 pixels, 16 bpp
----------------------------------------------------------------------------------------------------
Active Controls hiearchy:
TComboBox "cbo_Stempel"
Tfrm_stempeltoolwin "frm_stempeltoolwin"
----------------------------------------------------------------------------------------------------

Dax 27. Mai 2004 11:32

Re: Herausfinden in welcherquellcodezeile programm ist
 
Was programmierst du denn?
Vielleicht hängst an den benutzten Components, evt. fehlerhafte units...


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.
Seite 1 von 2  1 2      

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