[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.044
    Ämmm ...

    STRDBG TriggerPgmName UPDPROD(*YES)
    Breakpoint (F6)
    ...


    oder im Batch

    Job anhalten,
    STRSRVJOB derJob

    dann
    STRDBG ...

    Job starten
    F10
    DSPMODSRC
    Breakpoint ...


    Oder was meinst Du ?

    Robi
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Hallo,

    möglicherweise ist ja der Job nicht bekannt oder kann nicht angehalten werden. In dem Fall kann man im Debugger mit dem Befehl sbreak einen Service-Entry-Point setzen setzen. Es spielt dann keine Rolle, welcher Job das ausführt.

    Dieter

  3. #3
    Registriert seit
    Nov 2012
    Beiträge
    47
    Zitat Zitat von dschroeder Beitrag anzeigen
    Hallo,

    möglicherweise ist ja der Job nicht bekannt oder kann nicht angehalten werden. In dem Fall kann man im Debugger mit dem Befehl sbreak einen Service-Entry-Point setzen setzen. Es spielt dann keine Rolle, welcher Job das ausführt.

    Dieter
    Hallo,

    ja, der Job ist nicht bekannt...
    Kannst Du mir das etwas ausführlicher mit dem Service-Entry-Point erklären?

    Danke
    harbir

  4. #4
    Registriert seit
    Nov 2012
    Beiträge
    47
    Zitat Zitat von Robi Beitrag anzeigen
    Ämmm ...

    STRDBG TriggerPgmName UPDPROD(*YES)
    Breakpoint (F6)
    ...


    oder im Batch

    Job anhalten,
    STRSRVJOB derJob

    dann
    STRDBG ...

    Job starten
    F10
    DSPMODSRC
    Breakpoint ...


    Oder was meinst Du ?

    Robi
    danke... , aber das normale debuggen beherrsch ich...

  5. #5
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Zur Definition eines Service-Entry Points startet man den Debugger für das gewünschte Programm ganz normal mit STRDBG < Programmname>. Dann setzt man auf die gewünschte Zeile einen Breakpoint. Das macht man aber nicht mit der F6-Taste, sondern man gibt auf der Befehlszeile im Debugger sbreak user ein. (Z.B. "SBREAK 82 user meier"). In diesem Fall wird das Programm in der Zeile 82 gestoppt, sobald der User Meier in irgendeinem Job das Programm aufruft. Wenn das passiert, bekommt man in der Sitzung, in der man den Debugger gestartet hat, eine Meldung "Der Service-Eingangspunkt stoppte bei Zeile 20 in Programm SCR/A in Job ...". Auf diese Meldung geht man dann mit F1. Im Text kann man dann den genauen Job ablesen. In einer 2. Sitzung kann man dann für diesen Job einen STRSRVJOB durchführen und normal debuggen.

    Das ist ein wenig umständlich. Einfacher geht es, wenn man RDP einsetzt. Da ist das ganze in der grafischen Oberfläche etwas benutzerfreundlicher gemacht. Aber es ist das gleiche Verfahren.

    Gruß,
    Dieter

  6. #6
    Registriert seit
    May 2002
    Beiträge
    1.121
    Cool

    Wieder was dazu gelernt. Das hätte mir bei so manchen batch-programm schon weiter geholfen....

    Danke
    Ronald

  7. #7
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Das Thema Debugging scheint ja für für viele Forumsmitglieder interessant zu sein. Deshalb hier noch ein weiterer Hinweis zum STRDBG: Wenn man STRDBG standardmäßig ausführt, wird der zu debuggende Quelltext im 24x80 Modus angezeigt. Überlicherweise werden die meisten heute, wenn sie denn im SEU editieren, ihren Quelltext im 27x132 Modus anzeigen. Ich weiß nicht, ob bekannt ist, dass man den Debugger auch dazu bringen kann, den Quelltext im 132-Zeichen-Modus anzuzeigen. Dazu muss man vor dem Debugger-Start eine Environment-Variable setzen: ADDENVVAR ENVVAR(ILE_DEBUGGER_1)
    VALUE(ALLOW_WIDE_SCREEN) LEVEL(*JOB)
    Wir haben uns dazu ein eigenes Command "STRDBG132" erstellt, das die Variable setzt und nach dem Ende des Debugvorgangs wieder entfernt.

    Ich meine, dass es ab und zu mal Probleme mit dem "hochauflösenden" Modus geben kann, wenn die Anwendung zwischendurch ein 80-Zeichen Windows sendet. Ich bin mir da aber nicht mehr sicher. Bei uns läuft das jedenfalls ganz gut. Einige Kollegen verwenden den normalen STRDBG, andere den STRDBG132.

    Bei Bedarf kann ich das Command und das zugehörige CL gerne hier posten.

    Aber für die meisten ist das sicherlich ein "alter Hut".

    Gruß,
    Dieter

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Und zum Zurücksetzen auf 24x80 gibt man folgenden Befehl an:
    Code:
    ADDENVVAR ENVVAR(ILE_DEBUGGER_1) LEVEL(*JOB)
    ... und sollte ggf. in einem CL-Programm auf CPFA981 prüfen.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Jan 2012
    Beiträge
    1.199
    Hallo Birgitta,

    ich korrigiere dich nur ungern: Aber zum Zurücksetzen kann man nicht ADDENVVAR verwenden, sondern man muss den Wert mit CHGENVVAR zurücksetzen oder die Variable mit RMVENVVAR entfernen.

    Ich denke aber, dass allen klar war, was du gemeint hast.

    Gruß,
    Dieter

    Zitat Zitat von B.Hauser Beitrag anzeigen
    Und zum Zurücksetzen auf 24x80 gibt man folgenden Befehl an:
    Code:
    ADDENVVAR ENVVAR(ILE_DEBUGGER_1) LEVEL(*JOB)
    ... und sollte ggf. in einem CL-Programm auf CPFA981 prüfen.

    Birgitta

  10. #10
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    Zitat Zitat von dschroeder Beitrag anzeigen
    ... Ich weiß nicht, ob bekannt ist, dass man den Debugger auch dazu bringen kann, den Quelltext im 132-Zeichen-Modus anzuzeigen.

    ...mir war es neu - habe es gleich eingebaut, weil es mich schon immer genervt hat, dass der Kommentarbereich fehlt.
    Danke + Gruß,
    Christian

  11. #11
    Registriert seit
    Jan 2007
    Beiträge
    189
    Zitat Zitat von dschroeder Beitrag anzeigen
    Zur Definition eines Service-Entry Points startet man den Debugger für das gewünschte Programm ganz normal mit STRDBG < Programmname>. Dann setzt man auf die gewünschte Zeile einen Breakpoint. Das macht man aber nicht mit der F6-Taste, sondern man gibt auf der Befehlszeile im Debugger sbreak user ein. (Z.B. "SBREAK 82 user meier"). In diesem Fall wird das Programm in der Zeile 82 gestoppt, sobald der User Meier in irgendeinem Job das Programm aufruft. Wenn das passiert, bekommt man in der Sitzung, in der man den Debugger gestartet hat, eine Meldung "Der Service-Eingangspunkt stoppte bei Zeile 20 in Programm SCR/A in Job ...". Auf diese Meldung geht man dann mit F1. Im Text kann man dann den genauen Job ablesen. In einer 2. Sitzung kann man dann für diesen Job einen STRSRVJOB durchführen und normal debuggen.

    Das ist ein wenig umständlich. Einfacher geht es, wenn man RDP einsetzt. Da ist das ganze in der grafischen Oberfläche etwas benutzerfreundlicher gemacht. Aber es ist das gleiche Verfahren.

    Gruß,
    Dieter
    Wo ist das "Like" button?

    Also, if you don't know what job it is and it is not yet submitted (z.B. if a job is only submitted when a DTAQ entry is received), you can hold the JOBQ until the required job gets submitted.
    mfg

    Kit
    www.ecofitonline.com
    DeskfIT - ChangefIT - XrefIT

  12. #12
    Registriert seit
    Nov 2012
    Beiträge
    47
    Zitat Zitat von dschroeder Beitrag anzeigen
    Zur Definition eines Service-Entry Points startet man den Debugger für das gewünschte Programm ganz normal mit STRDBG < Programmname>. Dann setzt man auf die gewünschte Zeile einen Breakpoint. Das macht man aber nicht mit der F6-Taste, sondern man gibt auf der Befehlszeile im Debugger sbreak user ein. (Z.B. "SBREAK 82 user meier"). In diesem Fall wird das Programm in der Zeile 82 gestoppt, sobald der User Meier in irgendeinem Job das Programm aufruft. Wenn das passiert, bekommt man in der Sitzung, in der man den Debugger gestartet hat, eine Meldung "Der Service-Eingangspunkt stoppte bei Zeile 20 in Programm SCR/A in Job ...". Auf diese Meldung geht man dann mit F1. Im Text kann man dann den genauen Job ablesen. In einer 2. Sitzung kann man dann für diesen Job einen STRSRVJOB durchführen und normal debuggen.

    Das ist ein wenig umständlich. Einfacher geht es, wenn man RDP einsetzt. Da ist das ganze in der grafischen Oberfläche etwas benutzerfreundlicher gemacht. Aber es ist das gleiche Verfahren.

    Gruß,
    Dieter
    Hallo,

    danke für die Erklärung.

    Noch eine kurze Frage:
    Welcher User führt standardmäßig das Triggerpgm aus?
    ist das immer der User, der den Trigger auslöst oder ist das ein Systemuser?

    VG
    harbir

Similar Threads

  1. Debuggen von SQL-Sitzungen
    By Fuerchau in forum NEWSboard Programmierung
    Antworten: 9
    Letzter Beitrag: 01-06-12, 14:58
  2. Debuggen im Batchmodus
    By M Scheid in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 07-11-05, 10:22
  3. SQLCBL debuggen?
    By Cobolaner in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 23-09-05, 09:13
  4. Problem beim Debuggen
    By Flappes in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 21-07-05, 11:14
  5. Trigger Triggerprogramm Objektlock
    By kuempi von stein in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 01-03-05, 12:41

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •