# Traceverwaltung > Symcon Dokumentation · Deutsch · erzeugt am 2026-11-09 > Index: https://www.symcon.de/de/llms.txt ## Inhalt Seiten in dieser Datei: - IPS_GetTraceIDList – liefert die IDs der Trace-Einträge eines Objekts - IPS_GetTraceList – liefert einen Trace-Eintrag mit seiner Ursachenkette Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/traceverwaltung/ ## IPS_GetTraceIDList Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/traceverwaltung/ips-gettraceidlist/ `array IPS_GetTraceIDList(int $ObjektID)` liefert die IDs der Trace-Einträge eines Objekts **Parameter** - `$ObjektID` (int): ID des Objekts, dessen Trace-Einträge geliefert werden sollen **Rückgabewert** (array): Ein Array mit den IDs (TraceID) der aufbewahrten Trace-Einträge des Objekts, der älteste zuerst. Der Kernel zeichnet in Traces auf, was was ausgelöst hat: Jeder Eintrag steht für einen Vorgang – z.B. das Schreiben einer Variable, das dadurch ausgelöste Ereignis, dessen Aktion bzw. Skript, ein RequestAction, einen Timer oder eine Anfrage an den WebServer – und verweist über __ParentID__ auf den Eintrag, der ihn verursacht hat, sowie über __ChildIDs__ auf die Einträge, die er selbst verursacht hat. So entsteht für jede Ursache ein Baum, mit dem sich nachvollziehen lässt, warum sich z.B. eine Variable geändert hat. Die Funktion liefert die IDs aller aufbewahrten Einträge, die dem Objekt **ObjektID** zugeordnet sind – z.B. die Schreibvorgänge einer Variable oder die Ausführungen eines Ereignisses. Das sind höchstens die letzten 25 Einträge. Für ein Objekt ohne Einträge oder eine nicht vorhandene ID wird ein leeres Array geliefert. Wird als **ObjektID** 1 übergeben, werden die IDs aller aufbewahrten Einträge in beliebiger Reihenfolge geliefert. Die Einträge selbst und ihre Ursachenkette liefert [IPS_GetTraceList](management-traces.md). Traces werden nur im Arbeitsspeicher gehalten und gehen bei einem Neustart verloren. Pro Objekt werden die letzten 25 Einträge aufbewahrt, für Einträge ohne Objekt (z.B. WebServer) insgesamt die letzten 1000. Ein älterer Eintrag bleibt so lange erhalten, wie noch ein aufbewahrter Eintrag von ihm abstammt, damit Ketten vollständig bleiben. Beim Löschen eines Objekts werden seine Einträge entfernt. Zeichenketten in __Data__ werden auf 100 Bytes gekürzt und mit "..." markiert. **Beispiel** ```php print_r(IPS_GetTraceIDList(10018)); /* liefert z.B.: Array ( [0] => 1 [1] => 2 ) */ ``` ## IPS_GetTraceList Quelle: https://www.symcon.de/de/service/dokumentation/befehlsreferenz/traceverwaltung/ips-gettracelist/ `array IPS_GetTraceList(int $TraceID)` liefert einen Trace-Eintrag mit seiner Ursachenkette **Parameter** - `$TraceID` (int): ID des Trace-Eintrags **Rückgabewert** (array) Ein Array mit Trace-Einträgen, beginnend mit dem Eintrag **TraceID**, gefolgt von seinem Elterneintrag usw. bis zum Anfang der Kette. Jeder Eintrag enthält folgende Informationen als key => value Paare: | Index | Typ | Beschreibung | | ----------------- | ------- | ----------------------------------------------------------------------------------------------------- | | __TraceID__ | integer | Eindeutige, fortlaufende ID des Eintrags | | __ParentID__ | integer | ID des Eintrags, der diesen Eintrag ausgelöst hat (0 = Anfang einer Kette) | | __ChildIDs__ | array | IDs der Einträge, die von diesem Eintrag ausgelöst wurden | | __Depth__ | integer | Position in der Kette, beginnend bei 1 (0 = Platzhalter für einen nicht mehr verfügbaren Eintrag) | | __ObjectID__ | integer | ID des Objekts, dem der Eintrag zugeordnet ist (1 = kein Objekt, z.B. bei WebServer) | | __Sender__ | string | Art des Eintrags (siehe Sendertabelle) | | __ExecutionUser__ | string | Benutzer, in dessen Namen ausgeführt wurde (z.B. @admin; @unknown, wenn kein Benutzer angemeldet war) | | __TimeStamp__ | integer | Unix Zeitstempel der Erstellung | | __Data__ | array | Zusätzliche Informationen als key => value Paare, abhängig vom Sender (siehe Sendertabelle) | __Sendertabelle__ | Sender | Beschreibung | ObjectID | Data | | ------------- | --------------------------------------------------------------------------------- | ------------------- | ---------------------------------------------------------- | | Variable | Ein Wert wurde in eine Variable geschrieben (auch ohne Änderung) | Variable | VariableID, Value, OldValue | | RequestAction | Die Aktion einer Variable wurde angefordert | Variable | VariableID, ActionID, Value, Sender | | RequestAction | Die RequestAction-Funktion einer Instanz wurde für eine Statusvariable aufgerufen | Instanz | Ident, Value | | TriggerEvent | Ein ausgelöstes Ereignis führt seine Aktion aus | Ereignis | EventID, ActionID, Environment, Trigger, VariableID, Value | | CyclicEvent | Ein zyklisches Ereignis führt seine Aktion aus | Ereignis | EventID, ActionID, Environment | | Script | Ein Skript wird ausgeführt | Skript | Sender, ScriptID, FilePath, SenderID | | Event | PHP-Code wird im Auftrag eines Ereignisses ausgeführt | Ereignis | Sender, ScriptID, FilePath, SenderID | | Instance | PHP-Code wird für ein Zielobjekt ausgeführt | Zielobjekt | Sender, ScriptID, FilePath, SenderID | | Timer | Ein Timer einer Instanz wird ausgeführt | Instanz | TimerName, Instance, RunOnce | | DataFlow | Eine Instanz empfängt Daten über den Datenfluss | empfangende Instanz | InstanceID, ParentID | | WebServer | Eine Anfrage an den WebServer (Datei/Hook) oder ein JSON-RPC Aufruf | 1 | Path bzw. Method, RemoteIP, ProxyIPs (nur bei Proxys) | | System | Platzhalter für einen nicht mehr verfügbaren Eintrag | 1 | Reason | Der Kernel zeichnet in Traces auf, was was ausgelöst hat: Jeder Eintrag steht für einen Vorgang – z.B. das Schreiben einer Variable, das dadurch ausgelöste Ereignis, dessen Aktion bzw. Skript, ein RequestAction, einen Timer oder eine Anfrage an den WebServer – und verweist über __ParentID__ auf den Eintrag, der ihn verursacht hat, sowie über __ChildIDs__ auf die Einträge, die er selbst verursacht hat. So entsteht für jede Ursache ein Baum, mit dem sich nachvollziehen lässt, warum sich z.B. eine Variable geändert hat. Die Funktion liefert den Eintrag **TraceID** und alle Einträge, die ihn verursacht haben: Das erste Element ist der Eintrag selbst, das letzte Element der Anfang der Kette (__ParentID__ 0). Die von einem Eintrag ausgelösten Folgeeinträge sind in __ChildIDs__ aufgeführt und können ebenfalls über diese Funktion abgerufen werden. Die IDs der Einträge eines Objekts liefert [IPS_GetTraceIDList](management-traces.md). Ist ein Eintrag der Kette nicht mehr verfügbar, endet die Liste mit einem Platzhalter: __Depth__ 0, __Sender__ "System", __ObjectID__ 1 und dem Grund unter __Data__ → __Reason__. Existiert kein Eintrag mit der ID **TraceID**, schlägt die Funktion mit "No trace with ID … found" fehl. Traces werden nur im Arbeitsspeicher gehalten und gehen bei einem Neustart verloren. Pro Objekt werden die letzten 25 Einträge aufbewahrt, für Einträge ohne Objekt (z.B. WebServer) insgesamt die letzten 1000. Ein älterer Eintrag bleibt so lange erhalten, wie noch ein aufbewahrter Eintrag von ihm abstammt, damit Ketten vollständig bleiben. Beim Löschen eines Objekts werden seine Einträge entfernt. Zeichenketten in __Data__ werden auf 100 Bytes gekürzt und mit "..." markiert. **Beispiel** ```php print_r(IPS_GetTraceList(1)); /* liefert z.B.: Array ( [0] => Array ( [ChildIDs] => Array ( ) [Data] => Array ( [OldValue] => 0 [Value] => 5 [VariableID] => 10018 ) [Depth] => 1 [ExecutionUser] => @admin [ObjectID] => 10018 [ParentID] => 0 [Sender] => Variable [TimeStamp] => 1700000000 [TraceID] => 1 ) ) */ // Ursachenkette des neuesten Eintrags einer Variable ausgeben $ids = IPS_GetTraceIDList(10018); if (count($ids) > 0) { foreach (IPS_GetTraceList(end($ids)) as $entry) { echo $entry['Depth'] . ': ' . $entry['Sender'] . ' #' . $entry['ObjectID'] . PHP_EOL; } } ```