Mit dem Sondenfragment executableUnit können Sie detailliert definierte Datenerfassungen für Methoden durchführen, die mit der Ziel- und Filterspezifikation der Sonde übereinstimmen und für die Quellcodeinformationen verfügbar sind.
Ein Aufruf dieses Fragmenttyps wird in die Zielmethode vor allen ausführbaren Einheiten eingefügt. Bei Methoden, die mit der Ziel- und Filterspezifikation der Sonde übereinstimmen, für die jedoch keine Quellcodeinformationen verfügbar sind, wird das Fragment einmal am Anfang der Methode eingefügt.
executableUnit-Fragmente können alle Datenfeldtypen mit Ausnahme von returnedObject, exceptionObject, isFinally und thisObject verwenden. Am wichtigsten ist, dass sie das Datenfeld executableUnitNumber mit der Nummer der ausführbaren Einheit, die zur Ausführung ansteht, verwenden können.
In der Anzahl der ausführbaren Einheiten in einer Methode und in den Zeilentabellen sind keine ausführbaren Einheiten enthalten, die vom Probekit in die Methode eingefügt wurden.
Eine ausführbare Einheit beginnt am Anfang jedes Basisblocks und bei jedem Bytecode, dessen Quellenzeilennummer vom vorherigen Bytecode abweicht. Ein Basisblock ist ein Bereich mit Bytecodeanweisungen, aus dem und in den es keine Verzweigungen gibt. Wenn die erste Anweisung in einem Basisblock ausgeführt wird, werden alle Anweisungen ausgeführt, so dass diese Anweisungen als eine Gruppe betrachtet werden.
Basisblöcke enden unter anderem mit den Anweisungen branch, call, throw und return.
Manche Anweisungen wie "divide" werden nicht als Ende einer ausführbaren Einheit betrachtet, obwohl sie eine Ausnahme auslösen können. Dies ist ein weiterer Beleg dafür, dass eine ausführbare Einheit technisch nicht dasselbe wie ein Basisblock ist.
Wenn einer Java-Methode keine Quelleninformationen zugeordnet sind, wird die gesamte Methode als eine Methode mit nur einer ausführbaren Einheit betrachtet.
Übergeordnetes Thema: Referenzinformationen zu Probekit-Elementen
Zugehörige Verweise
Sondenobjekt 'Fragment'
Sondenobjekt 'Data'
Zugehörige Informationen
Beispiel für 'ExecutableUnit'