diff --git a/tools/analysis/VisualFAIL/core.php b/tools/analysis/VisualFAIL/core.php index 198a7b5c..95ffd2fa 100644 --- a/tools/analysis/VisualFAIL/core.php +++ b/tools/analysis/VisualFAIL/core.php @@ -7,7 +7,7 @@ $verbindung = mysql_connect ($host,$username, $password) mysql_select_db($database) or die ("Die Datenbank existiert nicht."); //Kommande lesen -switch ($_GET['kommando']) +switch ($_GET['kommando']) { case "dbTest" : dbTest();break; case "getAsmCode" : getAsmCode();break; @@ -23,77 +23,77 @@ switch ($_GET['kommando']) function dbTest() { - + $check = true; - + $abfrage = "SELECT 1 FROM objdump;"; - + $ergebnis = mysql_query($abfrage); - + if(!$ergebnis) { echo json_encode('Tabelle objdump nicht gefunden
'); return; } - + $abfrage = "SELECT 1 FROM fulltrace;"; - + $ergebnis = mysql_query($abfrage); - + if(!$ergebnis) { echo json_encode('Tabelle fulltrace nicht gefunden
'); return; } - + $abfrage = "SELECT 1 FROM dbg_filename;"; - + $ergebnis = mysql_query($abfrage); - + if(!$ergebnis) { echo json_encode('Tabelle dbg_filename nicht gefunden
'); return; } - + $abfrage = "SELECT 1 FROM dbg_mapping;"; - + $ergebnis = mysql_query($abfrage); - + if(!$ergebnis) { echo json_encode('Tabelle dbg_mapping nicht gefunden
'); return; } - + $abfrage = "SELECT 1 FROM dbg_methods;"; - - + + $ergebnis = mysql_query($abfrage); - + if(!$ergebnis) { echo json_encode('Tabelle dbg_methods nicht gefunden
'); return; } - + $abfrage = "SELECT 1 FROM dbg_source;"; - + $ergebnis = mysql_query($abfrage); - + if(!$ergebnis) { echo json_encode('Tabelle dbg_source nicht gefunden
'); return; } - + $abfrage = "SELECT 1 FROM dbg_stacktrace;"; - + $ergebnis = mysql_query($abfrage); - + if(!$ergebnis) { echo json_encode('Tabelle dbg_stacktrace nicht gefunden
'); return; } - + $abfrage = "SELECT 1 FROM dbg_variables;"; - + $ergebnis = mysql_query($abfrage); - + if(!$ergebnis) { echo json_encode('Tabelle dbg_variables nicht gefunden
'); return; @@ -103,67 +103,67 @@ function dbTest() function getBinarys() { $binarys = array(); - + $abfrage = "SELECT benchmark FROM variant;"; - + $ergebnis = mysql_query($abfrage); - + mysql_close($verbindung); - + while($row = mysql_fetch_object($ergebnis)) { array_push($binarys, $row->benchmark); } - + $result = array_unique($binarys); - + echo json_encode($result); } function getVariants() { $variants = array(); - + $abfrage = "SELECT id, variant FROM variant WHERE benchmark = '" . $_GET['datei'] ."';"; - + $ergebnis = mysql_query($abfrage); - + mysql_close($verbindung); - + while($row = mysql_fetch_object($ergebnis)) { $variants[$row->id] = $row->variant; } - + echo json_encode($variants); } -function getSourceFiles() +function getSourceFiles() { $sourceFiles = array(); - + $abfrage = "SELECT file_id, path FROM dbg_filename WHERE variant_id = '" . $_GET['variant']. "';"; - + $ergebnis = mysql_query($abfrage); - + mysql_close($verbindung); - + while($row = mysql_fetch_object($ergebnis)) { $sourceFiles[$row->file_id] = $row->path; } - + echo json_encode($sourceFiles); } function asmCode() { $content = ""; - + $abfrage = "SELECT instr_address, disassemble FROM objdump WHERE variant_id = '" . $_GET['variant_id'] ."' ORDER BY instr_address;"; - + $ergebnis = mysql_query($abfrage); - + mysql_close($verbindung); $content = $content; while($row = mysql_fetch_object($ergebnis)) @@ -179,14 +179,14 @@ function getAsmCode() $resulttypes = array(); $asmAbfrage = "SELECT instr_address, disassemble FROM objdump WHERE variant_id = '" . $_GET['variant_id'] ."' ORDER BY instr_address;"; - + $asmcode = mysql_query($asmAbfrage); - + getResulttypes($resulttypes); - + $fehlerdaten = resultsDB($_GET['variant_id'], $_GET['version'], $resulttypes); //$fehlerdaten = askDBFehler($_GET['variant_id'], $resulttypes, $_GET['version']); - + //print_r($fehlerdaten); $content = '
instr_address,$fehlerdaten[Daten])) { $content = $content . '' . dechex($row->instr_address) . ' ' . htmlspecialchars($row->disassemble) . '
'; } else { $content = $content . '' . dechex($row->instr_address) . ' ' . htmlspecialchars($row->disassemble) . '
'; } } - + $content = $content . '
'; - + echo json_encode($content); } @@ -219,26 +219,26 @@ function getHighlevelCode() { $content = ""; $resulttypes = array(); - + getResulttypes($resulttypes); - + $kleinsteAdresseAbfrage = "SELECT instr_address FROM objdump WHERE variant_id = '" . $_GET['variant_id']. "' ORDER BY instr_address LIMIT 1;"; $kleinsteAdresseErgebnis = mysql_query($kleinsteAdresseAbfrage); $kleinsteAdresse = mysql_fetch_object($kleinsteAdresseErgebnis); - + $highlevelCodeAbfrage = "SELECT linenumber, line FROM dbg_source WHERE variant_id = '" . $_GET['variant_id']. "' AND file_id = '" . $_GET['file_id']. "' ORDER BY linenumber;"; $mappingAbfrage = "SELECT instr_absolute, linenumber FROM dbg_mapping WHERE variant_id = '" . $_GET['variant_id']. "' AND file_id = '" . $_GET['file_id'] . "' AND instr_absolute >= '" . $kleinsteAdresse->instr_address . "' ORDER BY instr_absolute;"; - + $highlevelCode = mysql_query($highlevelCodeAbfrage); $mappingInfo = mysql_query($mappingAbfrage); - + $fehlerdaten = resultsDB($_GET['variant_id'], $_GET['version'], $resulttypes); - + $mappingRanges = array(); $numEntrysMapping = mysql_num_rows($mappingInfo); - + $row = mysql_fetch_object($mappingInfo); - + for ($i = 0; $i < $numEntrysMapping-1; $i++) { if(!is_array($mappingRanges[$row->linenumber])) { @@ -249,10 +249,10 @@ function getHighlevelCode() $row = mysql_fetch_object($mappingInfo); array_push($mappingRanges[$oldLineNumber], array($firstAddr, $row->instr_absolute)); } - + $mapping = array(); $maxFehlerMapping = array(); - + foreach ($mappingRanges as $lineNumber => $value) { $maxFehler = array(); foreach ($resulttypes as $val) { @@ -264,23 +264,23 @@ function getHighlevelCode() //Leerzeile $mapping[$lineNumber] [] = '
'; while($row = mysql_fetch_object($mappingErgebnis)) { - + if (array_key_exists($row->instr_address,$fehlerdaten[Daten])) { $newline = $newline . 'instr_address][$value]; } - + $newline = $newline . ' cursor: pointer;>' . dechex($row->instr_address) . ' ' . htmlspecialchars($row->disassemble) . '
'; } else { $newline = '' . dechex($row->instr_address) . ' ' . htmlspecialchars($row->disassemble) . '
'; } $mapping[$lineNumber] [] = $newline; } - + //Leerzeile $mapping[$lineNumber] [] = '
'; } @@ -288,7 +288,7 @@ function getHighlevelCode() $maxFehlerMapping[$lineNumber][$value] = $maxFehler[$value]; } } - + while($row = mysql_fetch_object($highlevelCode)) { $content = $content . '' . $row->linenumber . ' : ' . $row->line . '
'; @@ -307,18 +307,18 @@ function getHighlevelCode() } mysql_close($verbindung); - + echo json_encode($content); } function getResulttypes(&$resulttypes) { $abfrage = "SELECT resulttype FROM " . $GLOBALS['result_table'] . " GROUP BY resulttype;"; - + $ergebnis = mysql_query($abfrage); - + mysql_close($verbindung); - + while ($row = mysql_fetch_object($ergebnis)) { //echo $row->resulttype; array_push($resulttypes, $row->resulttype); @@ -328,18 +328,18 @@ function getResulttypes(&$resulttypes) function getResulttypesOUT() { $resulttypes = array(); - + $abfrage = "SELECT resulttype FROM " . $GLOBALS['result_table'] . " GROUP BY resulttype;"; - + $ergebnis = mysql_query($abfrage); - + mysql_close($verbindung); - + while ($row = mysql_fetch_object($ergebnis)) { //echo $row->resulttype; array_push($resulttypes, $row->resulttype); } - + echo json_encode($resulttypes); } @@ -360,7 +360,7 @@ function askDBFehler($variant_id, $resulttypes, $version) JOIN fsppilot p ON t.variant_id = '" . $variant_id . "' AND p.variant_id = '" . $variant_id . "' - AND t.data_address = p.data_address + AND t.data_address = p.data_address AND p.instr2 = t.instr2 JOIN " . $GLOBALS['result_table'] . " r ON p.id = r.pilot_id @@ -372,11 +372,11 @@ function askDBFehler($variant_id, $resulttypes, $version) $abfrage = $abfrage . $temp; } $abfrage = $abfrage . " FROM trace t - JOIN fsppilot p - ON t.variant_id = p.variant_id - AND t.data_address = p.data_address + JOIN fsppilot p + ON t.variant_id = p.variant_id + AND t.data_address = p.data_address AND p.instr2 = t.instr2 - JOIN " . $GLOBALS['result_table'] . " r + JOIN " . $GLOBALS['result_table'] . " r ON p.id = r.pilot_id WHERE t.variant_id = '" . $variant_id . "' AND t.accesstype = 'R' GROUP BY r.latest_ip;"; @@ -390,38 +390,38 @@ function askDBFehler($variant_id, $resulttypes, $version) LEFT JOIN trace t ON ft.variant_id = '" . $variant_id . "' AND t.variant_id = '" . $variant_id . "' - AND ft.instr BETWEEN t.instr1 AND t.instr2 + AND ft.instr BETWEEN t.instr1 AND t.instr2 AND t.accesstype = 'R' JOIN fsppilot p ON t.variant_id = '" . $variant_id . "' AND p.variant_id = '" . $variant_id . "' - AND t.data_address = p.data_address + AND t.data_address = p.data_address AND p.instr2 = t.instr2 JOIN " . $GLOBALS['result_table'] . " r ON p.id = r.pilot_id GROUP BY ft.instr_absolute;"; } - + //echo $abfrage; - + $ergebnis = mysql_query($abfrage); mysql_close($verbindung); - + return $ergebnis; } function resultsDB($variant_id, $version, $resulttypes) { - + getResulttypes($resulttypes); - + //print_r($resulttypes); - + $ergebnis = askDBFehler($variant_id, $resulttypes, $version); - + //print_r($ergebnis); - + $results = array(); // We find the fields number @@ -430,11 +430,11 @@ function resultsDB($variant_id, $version, $resulttypes) for($i=0;$i<$numfields;$i++){ $fieldname[$i]=mysql_field_name($ergebnis, $i); } - + for($i=2;$i<$numfields;$i++){ $results["max"][$fieldname[$i]] = 0; } - + $maxFehler = 0; while($row = mysql_fetch_object($ergebnis)) { @@ -445,7 +445,7 @@ function resultsDB($variant_id, $version, $resulttypes) for ($i = 1 ; $i < $numfields ; $i++) { $results["Daten"][$row->instr_absolute][$fieldname[$i]] = $row->$fieldname[$i]; - + if($row->$fieldname[$i] > $results["max"][$fieldname[$i]]) { $results["max"][$fieldname[$i]] = $row->$fieldname[$i]; @@ -459,7 +459,7 @@ function resultsDB($variant_id, $version, $resulttypes) for ($i = 0 ; $i < $numfields ; $i++) { $results["Daten"][$row->latest_ip][$fieldname[$i]] = $row->$fieldname[$i]; - + if($row->$fieldname[$i] > $results["max"][$fieldname[$i]]) { $results["max"][$fieldname[$i]] = $row->$fieldname[$i]; @@ -468,7 +468,7 @@ function resultsDB($variant_id, $version, $resulttypes) } } } - + return $results; } diff --git a/tools/analysis/VisualFAIL/index.php b/tools/analysis/VisualFAIL/index.php index 325c849f..b5f1f509 100644 --- a/tools/analysis/VisualFAIL/index.php +++ b/tools/analysis/VisualFAIL/index.php @@ -43,7 +43,7 @@ -
+
- +
Benchmark
@@ -81,7 +81,7 @@
- +
Variante
@@ -93,8 +93,8 @@
- - + +
diff --git a/tools/analysis/VisualFAIL/js/myscript.js b/tools/analysis/VisualFAIL/js/myscript.js index 5495139d..07cffcb8 100644 --- a/tools/analysis/VisualFAIL/js/myscript.js +++ b/tools/analysis/VisualFAIL/js/myscript.js @@ -10,29 +10,29 @@ function dec2hex(dec) { if (dec < 0) { dec = 0xFFFFFFFF + dec + 1; } - + hex = parseInt(dec, 10).toString(16); - + return hex; } //Berechne den Farbwert (z.B.: #FFFFFF) fuer gegebene Fehlerwerte function calcColor(fehler, maxFehler) { //console.log("Farbe Fehler: " + fehler + " Max: " + maxFehler); - + var part = 0; - + if (fehler != 0) { var x = 255/Math.log(maxFehler); part = x*Math.log(fehler); } - + //console.log("Farbe Fehler: " + fehler + " Max: " + maxFehler + " Part: " + part); - + var hex = dec2hex(255-part); - + //console.log("Farbe Fehler: " + fehler + " Max: " + maxFehler + " Part: " + part + " Farbcode: " + ("#FF" + hex + hex)); - + if (hex >= 0 && hex <= 9 ) { return "#FF" + hex + hex + hex + hex; } else { @@ -48,7 +48,7 @@ $('body').popover({ content: function() { var ausgabe = ''; var caller = $(this); - + $.getJSON("core.php", {kommando: 'getResultTypes'}, function(data) { $.each(data, function(key, val) { ausgabe = ausgabe + val +': ' + caller.attr(val) + '
'; @@ -61,10 +61,10 @@ $('body').popover({ //Einblenden des Modal "Loading" fuer Ajax Requests /*$(document).ajaxStart(function(){ //console.log("ajaxstart"); - $("body").addClass("loading"); + $("body").addClass("loading"); }).ajaxStop(function(){ //console.log("ajaxstop"); - $("body").removeClass("loading"); + $("body").removeClass("loading"); });*/ //User-Interaktionen nachdem das DOM geladen ist @@ -72,7 +72,7 @@ $(document).ready(function() { //DB check $.getJSON("core.php", {kommando: 'dbTest'}, function(data) { - + if(data != "ok") { $('html').html(data); } @@ -84,54 +84,54 @@ $(document).ready(function() { $('#binary').append(''); }); }); - + //Auswahl eines Eintrages aus den Source-Files für die Darstellung des Hochsprachencode $('#sourceFiles').change(function() { if($(this).val() != 'none') { $.getJSON("core.php", {kommando: 'getHighlevelCode', variant_id: $('#variant').val(), file_id: $(this).val(), version: $('#faerbung').val()}, function(data) { - $('#hcode').html(data); - + $('#hcode').html(data); + $('.maxFehlerMapping').on( "calcColor", function( event, newMaxFehler, activeFehlertypes) { var newFehler = 0; var actualRow = $(this); - + $.each(activeFehlertypes, function(key, val) { newFehler = newFehler + parseInt(actualRow.attr(val)); }); - + console.log("jepp" + newMaxFehler + " " + newFehler); - + $(this).prev().prev().prev().css("background-color", calcColor(newFehler, newMaxFehler)) .css('cursor', 'pointer'); }); - + $('.hasFehler').on( "calcColor", function( event, newMaxFehler, activeFehlertypes) { var newFehler = 0; var actualRow = $(this); - + $.each(activeFehlertypes, function(key, val) { newFehler = newFehler + parseInt(actualRow.attr(val)); }); - + $(this).css("background-color", calcColor(newFehler, newMaxFehler)) .css('cursor', 'pointer'); }); }); - - + + setTimeout(function(){ var activeFehlertypes = new Array(); var newMaxFehler = 0; - + $('#fehlertypenset > .active').each(function(){ activeFehlertypes.push($(this).attr("id")); //console.log("Hinzugefuegt: " + $(this).attr("id")); }); - - + + $.each(activeFehlertypes,function(key, name){ - + //Neuen MaxFehler berechnen newMaxFehler = newMaxFehler + parseInt($('#maxFehler').attr(name)); }); @@ -140,7 +140,7 @@ $(document).ready(function() { },100); } }); - + //Auswahl eines Eintrages aus den Binarys für die Darstellung des Assembler-Code $('#binary').change(function() { if($(this).val() != 'none') { @@ -152,10 +152,10 @@ $(document).ready(function() { }); } }); - + //Analyse Button wird gedrueckt $('#analyse').button().click( function () { - + $.getJSON("core.php", {kommando: 'getAsmCode', variant_id: $('#variant').val(), version: $('#faerbung').val()}, function(data) { $('#asm').html(data); }); @@ -165,7 +165,7 @@ $(document).ready(function() { $('#sourceFiles').append(''); }); }); - + $.getJSON("core.php", {kommando: 'getResultTypes'}, function(data) { $('#fehlertypenset').html(''); @@ -173,30 +173,30 @@ $(document).ready(function() { $('#fehlertypenset').append(''); //$('#'+ val +'.btn').button('toggle'); }); - + $('.hasFehler').on( "calcColor", function( event, newMaxFehler, activeFehlertypes) { var newFehler = 0; var actualRow = $(this); - + $.each(activeFehlertypes, function(key, val) { newFehler = newFehler + parseInt(actualRow.attr(val)); }); - + $(this).css("background-color", calcColor(newFehler, newMaxFehler)) .css('cursor', 'pointer'); }); - + //Auf Änderungen bzgl. des Fehler-Buttonset horchen $('#fehlertypenset input[type=checkbox]').change(function() {setTimeout(function(){ //console.log("aenderung!"); var activeFehlertypes = new Array(); var newMaxFehler = 0; - + $('#fehlertypenset > .active').each(function(){ activeFehlertypes.push($(this).attr("id")); }); - - + + $.each(activeFehlertypes,function(key, name){ //Neuen MaxFehler berechnen newMaxFehler = newMaxFehler + parseInt($('#maxFehler').attr(name));