![]() |
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: |
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! |
Re: Herausfinden in welcherquellcodezeile programm ist
Hm, kuck mal in der Hilfe nach Assert.
|
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 |
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. |
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?
|
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) |
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 |
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" ---------------------------------------------------------------------------------------------------- |
Re: Herausfinden in welcherquellcodezeile programm ist
Was programmierst du denn?
Vielleicht hängst an den benutzten Components, evt. fehlerhafte units... |
Re: Herausfinden in welcherquellcodezeile programm ist
es liegt auf jeden fall an fehlerhaften komponenten *g* und zwar an meinem selbstprogrammierten Audioengine. Das Problem liegt beim faden zwischen zwei liedern. Funktioniert eigentlich problemlos, außer wenn man dann so kurze lieder von unter 1 Sekunden hat so das die player gar nicht so schnell das alte lied entladen können wie schon wieder ein neues lied geladen werden soll...
|
Re: Herausfinden in welcherquellcodezeile programm ist
hallo sir t,
schon mal unter w32 debug api geguckt. habe gerade das buch von kosch beim wickel, habe überflogen, das er ein ddwin prog dabei hat, wo er über die ganzen api's info's sammeln kann raik |
Re: Herausfinden in welcherquellcodezeile programm ist
hab ich noch nicht geguckt, hatte davon noch nie was gehört. Wenn ich das Problem nicht lösen kann werd ich es wohl mit der Jedidebug-komponente versuchen. Ich konnte den Fehler ja inzwischen auf 2 bis 3 proceduren in meinem audioengine eingrenzen und weiß auch wodurch er hervorgerufen wurde. Es war im Prinzip ein Deadlook (oder wie man das auch immer schreibt)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz