Progarmmzeile ermitteln

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 286
Registriert: So, 26. Mär 2006 12:23

Progarmmzeile ermitteln

Beitrag von saul »

Hallo,

Code: Alles auswählen

Proce main
	func test()
	func test1()
	do while !eof()
		alert"Dies ist Zeile")
	enddo

Return .T.
Gibt es die Möglichkeit die Zeile des Programmcode zu ermitteln in der alert ausgeführt wird?
Vielen Dank
mfg
Wolfgang
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 213
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 16 Mal
Danksagung erhalten: 4 Mal

Re: Progarmmzeile ermitteln

Beitrag von Dominik Krebs »

Hay,
ja das geht mit ProcLine()
Gruß Dominik
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2834
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 101 Mal
Danksagung erhalten: 13 Mal

Re: Progarmmzeile ermitteln

Beitrag von georg »

Guten Abend,


laut Dokumentation muss dafür aber auch der Switch /L beim Compilieren verwendet werden.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14669
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Progarmmzeile ermitteln

Beitrag von Jan »

Moin,

da ProcLine() auch in der errorsys aufgerufen wird, um ein vernünfriges Fehelrprotokoll zu erzueugen, denke ich das /l nicht explizit notwendig ist. Ansonsten würde ja auch die errorsys nicht sauber arbeiten.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2834
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 101 Mal
Danksagung erhalten: 13 Mal

Re: Progarmmzeile ermitteln

Beitrag von georg »

Guten Morgen, Jan -


da habe ich die Dokumentation gestern zu schnell gelesen: wenn /L verwendet wird, werden keine Programmzeilen ins Programm übernommen.

Ich gehe davon aus, dass in diesem Fall ProcLine() den Wert Null liefert.

Code: Alles auswählen

FUNCTION Main()
	nWert := AppDesktop():hudelDudel()
RETURN (.T.)
Und in der ErrorLog steht dann das drin:

Code: Alles auswählen

------------------------------------------------------------------------------
CALLSTACK:
------------------------------------------------------------------------------
Aufgerufen von MAIN(0)
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15720
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 76 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: Progarmmzeile ermitteln

Beitrag von brandelh »

Die Quellcode Zeile als solche ist aber nicht wirklich sinnvoll um in einem großen Projekt eine Stelle zu finden, insbesondere wenn man dafür auch noch Code ändern muss.

In solchen Fällen hinterlege ich eine eigene Fehlermeldung, welche ich dann mit dem Editor im kompletten Projekt suchen lassen kann.

z.B. Code #111# oder "in Func xyz fehlt eine Option ..."
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9412
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 109 Mal
Danksagung erhalten: 367 Mal
Kontaktdaten:

Re: Progarmmzeile ermitteln

Beitrag von Tom »

Die Quellcode Zeile als solche ist aber nicht wirklich sinnvoll um in einem großen Projekt eine Stelle zu finden
Nicht Dein Ernst. Oder doch? :oops:

Wir generieren im Problembericht - dem stark erweiterten Errorlog - eine eindeutige Fehler-ID, die sich aus Versionsnummer und Buildnummer und dem kompletten Callstack zusammensetzt, und über diese ID ist alles zu Fehlern in unserem Ticketsystem und dem Versionsmanagement verknüpft. Wenn Fehler gehäuft auftreten, kann auf diese Weise sogar ohne Kenntnis des Quellcodes geholfen werden. Kunden können den aus der ID erzeugten QR-Code scannen und sehen online, ob das Problem bekannt ist und ob es eine Lösung dazu gibt - und worin die besteht.

Und für uns Entwickler ist das natürlich die entscheidende Kennzahl, verbunden mit allen weiteren Fehlerinformationen. Aber ohne Zeilennummern im ausgelieferten Code geht das natürlich nicht.
Herzlich,
Tom
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15720
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 76 Mal
Danksagung erhalten: 38 Mal
Kontaktdaten:

Re: Progarmmzeile ermitteln

Beitrag von brandelh »

du musst schon alles lesen ;-)

wenn man einen (aufgemotzte) XppError() Log hat ist der Callstack mit Zeilennummern sinnvoll und gut.

Ich hatte es oben eher so verstanden, dass zusätzliche Infos beim Debuggen oder Testen benötigt werden,
dafür ist dir reine Zeilennummer nur dann hilfreich,
wenn der Funktionsname oder der Quellcode-Name bekannt ist.

Und wie oft kommt es vor, dass verschiedene Versionen draußen sind, eine eigene ID / Fehlermeldung bleibt immer bestehen, auch wenn sich die Zeilen ändern.

Das wollte ich damit ausdrücken.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9412
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 109 Mal
Danksagung erhalten: 367 Mal
Kontaktdaten:

Re: Progarmmzeile ermitteln

Beitrag von Tom »

Ich bin halt eher der hastige Typ. ;) Nein, zum Debuggen ist das in dieser Weise relativ sinnlos. Wobei ... wenn man den Debugger nicht nutzt und herauszubekommen versucht, in welcher Abzweigung Fehlverhalten steckt, dann wieder doch.
Herzlich,
Tom
Benutzeravatar
Marcus Herz
1000 working lines a day
1000 working lines a day
Beiträge: 870
Registriert: Mo, 16. Jan 2006 8:13
Wohnort: Allgäu
Hat sich bedankt: 40 Mal
Danksagung erhalten: 200 Mal
Kontaktdaten:

Re: Progarmmzeile ermitteln

Beitrag von Marcus Herz »

Es gibt auch noch die Compiler Konstante
__LINE__
die kann man an Alert Message anhängen, falls du das gesucht hast:

Code: Alles auswählen

alert"Dies ist Zeile: "+ str(__LINE__) )
Gruß Marcus

Den Kopf in den Sand zu stecken verbessert die Welt auch nicht.
saul
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 286
Registriert: So, 26. Mär 2006 12:23

Re: Progarmmzeile ermitteln

Beitrag von saul »

Guten Morgen,
procline war genau das was ich gesucht habe. Danke
Wolfgang
Antworten