CX_PROFILE_MANAGER::Start
Beschreibung:
Diese Funktion startet das Profiling. Der Dateiname muss über FileName bereits gesetzt sein.
Das Protokoll liegt im XML-Format vor und ist in <profile>...</profile> geklammert. Auch wenn in den nachfolgenden Beschreibung z.B. <statement ...>...</statement> steht, kann solch ein XML-Tag zu <statement ... /> zusammengezogen sein, wenn es selbst keine weiteren XML-Tags enthält! Also Vorsicht beim Parsen, solange ClassiX® noch kein XML-Parser enthält!
Die Bits im Parameter steuern, was protokolliert wird:
Bit | Was? | Wie? | Parameter |
---|---|---|---|
0 | Message-Bearbeitung |
|
time: Zeitpunkt seit Messbeginn in Millisekunden name: Name der Message module (optional): Name des Moduls, in dem der Code der Message ausgeführt wird |
1 | Makro-Aufruf |
|
time: Zeitpunkt seit Messbeginn in Millisekunden name: Name des Makros module (optional): Name des Moduls, in dem das Makro definiert ist |
2 | IV-Befehl |
|
time: Zeitpunkt seit Messbeginn in Millisekunden code: Statement |
3 | C++-Funktion |
|
time: Zeitpunkt seit Messbeginn in Millisekunden function: C++-Funktion info: Weitere Informationen, z.B. Parameter der Funktion |
Weitere Informationen zur C++-Funktion |
|
time: Zeitpunkt seit Messbeginn in Millisekunden | |
4 | Transaktionsbeginn |
|
time: Zeitpunkt seit Messbeginn in Millisekunden name (optional): Name der Transaktion |
Transaktionsende |
|
time: Zeitpunkt seit Messbeginn in Millisekunden type: 'commit' oder 'abort' name (optional): Name der Transaktion |
|
Statistiken über letzte Transaktion |
|
fetchedPages: Anzahl nachgeladener Pages commitedPages: Anzahl zum Server gesendeter Pages translatedPointers: Anzahl Zeiger, die in den Speicher gemapped wurden |
|
Datenbankoperationen |
|
time: Zeitpunkt seit Messbeginn in Millisekunden action: Operation, z.B. 'fetch' segment: Name des Segments, in der die Operation stattfand segmentNo: Nummer des Segments clusterNo: Nummer des Clusters pageNo: Nummer der Page nPages: Anzahl der Pages |
Code-Beispiel:
Var(level) CreateTransObject(CX_BIT_PATTERN) -> level GetValue(, LevelMsgDef) if { 0 1 level Call(SetBit) 1 1 level Call(SetBit) } GetValue(, LevelStmnt) if { 2 1 level Call(SetBit) } GetValue(, LevelTrace) if { 3 1 level Call(SetBit) } GetValue(, LevelDB) if { 4 1 level Call(SetBit) } level GetManager(PROFILE) Call(Start) // Widgets, um Level zu steuern Group(ProfileLevel, SELECT_MULTIPLE, 10, 1, 350, 41, T("Profile Level", "Profiling level")) { Checkbox(LevelMsgDef, 10, 12, 330, T("&Messages und Makros", "&Messages and macros")) Checkbox(LevelStmnt, 10, 20, 330, T("&Statements", "&Statements")) Checkbox(LevelTrace, 10, 28, 330, T("C++-&Funktionen", "C++ &functions")) Checkbox(LevelDB, 10, 36, 330, T("&Datenbankoperationen", "&Database operations")) }
Stack | Position | Objekttyp | Kurzbeschreibung |
---|---|---|---|
Stack(In) | Top | CX_PROFILE_MANAGER | Profile-Manager-Objekt |
Top-1 | INTEGER | Bitmaske (s.o.) |