@ScriptLineNumber / in Function die aufrufende @ScriptLineNumber nutzen und Debuggen in kompilierten Programmen

  • Gibt es eine Möglichkeit, in einer Function die Zeile des Aufrufs zu verarbeiten ohne diese als Parameter zu übergeben? Also etwas wie @CallingScriptLineNumber?

    Und: gibt es einen Weg, die @ScriptLineNumber auch im kompilierten Programm beim Debuggen oder bei Fehlermeldungen anzuzeigen? Ich denke da an ein Script, das man über sein Script laufen lässt und das @ScriptLineNumber durch die aktuelle @ScriptLineNumber ersetzt. Wäre vermutlich nicht schwer, aber wenn man weiter entwickeln will, dann muss das ja auch rückgängig gemacht werden und dazu fehlt mir die Idee.

    Debuggen im Interpreter erfasst nicht alles, da ich mich dann an jeden Client setzen müsste und testen, da teilweise von der Umgebung abhängig.

    Vielleicht hat jemand schon mal etwas zu Debuggen in kompilierten AU3s entwickelt?

    :)

  • Gibt es eine Möglichkeit, in einer Function die Zeile des Aufrufs zu verarbeiten ohne diese als Parameter zu übergeben? Also etwas wie @CallingScriptLineNumber?

    Nein, gibt es nicht. Du kannst der Funktion aber einfach einen optionalen Parameter übergeben und ihn mit @ScriptLineNumber vorbelegen.

    AutoIt
    _Test()
    _Test(1, 3)
    
    Func _Test($iScriptLineNumber = @ScriptLineNumber, $iError = @error)
        ConsoleWrite('$iScriptLineNumber = ' & $iScriptLineNumber & @CRLF)
        ConsoleWrite('$iError            = ' & $iError & @CRLF)
    EndFunc

    Und: gibt es einen Weg, die @ScriptLineNumber auch im kompilierten Programm beim Debuggen oder bei Fehlermeldungen anzuzeigen?

    So evtl.:

    AutoIt
    #AutoIt3Wrapper_Run_Au3Stripper=y    ; Run Au3Stripper before compilation (Default=n) 
    #Au3Stripper_Parameters=/rsln        ; Replace @ScriptLineNumber with the actual line number in the merged source. This is for debug purposes with compiled scripts.
                                         ; All master lines will show 2 numbers in the format xxx/yyy where xxx is the original master script line number and yyy the
                                         ; merged script line number.