use of org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder in project linuxtools by eclipse.
the class GmonView method createExportToCSVAction.
@Override
protected IAction createExportToCSVAction() {
IAction action = new STExportToCSVAction(this.getSTViewer()) {
@Override
public void run() {
Object o = getSTViewer().getInput();
if (o instanceof GmonDecoder) {
GmonDecoder gd = (GmonDecoder) o;
// $NON-NLS-1$
getExporter().setFilePath(gd.getGmonFile() + ".csv");
}
super.run();
}
};
return action;
}
use of org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder in project linuxtools by eclipse.
the class GmonView method displayGprofView.
/**
* Display gmon results in the GProf View. NOTE: this method has to be called from within the UI thread.
*
* @param binaryPath
* @param gmonPath
* @param instanceName
*/
public static GmonView displayGprofView(String binaryPath, String gmonPath, IProject project) {
IBinaryObject binary = STSymbolManager.sharedInstance.getBinaryObject(new Path(binaryPath));
if (binary == null) {
// $NON-NLS-1$
MessageDialog.openError(// $NON-NLS-1$
PlatformUI.getWorkbench().getDisplay().getActiveShell(), // $NON-NLS-1$
"Invalid binary file", // $NON-NLS-1$
binaryPath + " is not a valid binary file.");
return null;
} else if (binary.getCPU().equals("ppc64") && !binary.isLittleEndian()) {
// $NON-NLS-1$
binary = new PPC64ElfBinaryObjectWrapper(binary.getBinaryParser(), binary.getPath(), binary.getType());
}
GmonDecoder decoder = new GmonDecoder(binary, project);
try {
decoder.read(gmonPath);
} catch (IOException e) {
Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
Activator.getDefault().getLog().log(status);
}
return displayGprofView(decoder, gmonPath);
}
use of org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder in project linuxtools by eclipse.
the class GprofTest method data.
@Parameters
public static Collection<Object[]> data() {
List<Object[]> params = new ArrayList<>();
boolean addr2line2_16 = false;
try {
Process p = Runtime.getRuntime().exec("addr2line --version");
InputStream is = p.getInputStream();
LineNumberReader reader = new LineNumberReader(new InputStreamReader(is));
String line;
while ((line = reader.readLine()) != null) {
if (line.contains("addr2line 2.16.")) {
addr2line2_16 = true;
break;
}
}
} catch (IOException e) {
}
for (File testDir : STJunitUtils.getTestDirs()) {
final File gmonFile = new File(testDir, OUTPUT_FILE);
final File binaryFile = new File(testDir, BINARY_FILE);
File view_cg_RefFile_default = new File(testDir, "testCallgraphView.ref");
File view_cg_RefFile_alternate = new File(testDir, "testCallgraphView.ref.binutils-2.16");
File view_cg2_RefFile_default = new File(testDir, "testCallgraphTimeView.ref");
File view_cg2_RefFile_alternate = new File(testDir, "testCallgraphTimeView.ref.binutils-2.16");
final File view_cg_RefFile;
final File view_cg2_RefFile;
if (addr2line2_16 && view_cg_RefFile_alternate.exists()) {
view_cg_RefFile = view_cg_RefFile_alternate;
} else {
view_cg_RefFile = view_cg_RefFile_default;
}
if (addr2line2_16 && view_cg2_RefFile_alternate.exists()) {
view_cg2_RefFile = view_cg2_RefFile_alternate;
} else {
view_cg2_RefFile = view_cg2_RefFile_default;
}
final File view_cg2_DumpFile = new File(testDir, "testCallgraphTimeView.dump");
final File view_cg_DumpFile = new File(testDir, "testCallgraphView.dump");
final File view_samplesFile_RefFile = new File(testDir, "testSampleView.ref");
final File view_samplesFile_DumpFile = new File(testDir, "testSampleView.dump");
final File view_samplesFileT_RefFile = new File(testDir, "testTimeView.ref");
final File view_samplesFileT_DumpFile = new File(testDir, "testTimeView.dump");
final File view_samplesFunction_RefFile = new File(testDir, "testFunctionSampleView.ref");
final File view_samplesFunction_DumpFile = new File(testDir, "testFunctionSampleView.dump");
final File view_samplesFunctionT_RefFile = new File(testDir, "testFunctionTimeView.ref");
final File view_samplesFunctionT_DumpFile = new File(testDir, "testFunctionTimeView.dump");
final File view_samplesFlat_RefFile = new File(testDir, "testFlatSampleView.ref");
final File view_samplesFlat_DumpFile = new File(testDir, "testFlatSampleView.dump");
final File view_samplesFlatT_RefFile = new File(testDir, "testFlatTimeView.ref");
final File view_samplesFlatT_DumpFile = new File(testDir, "testFlatTimeView.dump");
IBinaryObject binary = STSymbolManager.sharedInstance.getBinaryObject(new Path(binaryFile.getAbsolutePath()));
final GmonDecoder gd = new GmonDecoder(binary, null);
try {
gd.read(gmonFile.getAbsolutePath());
} catch (IOException e) {
e.printStackTrace();
}
params.add(new Object[] { gmonFile, gd, view_cg_RefFile, view_cg_DumpFile, CallGraphContentProvider.sharedInstance, false });
params.add(new Object[] { gmonFile, gd, view_cg2_RefFile, view_cg2_DumpFile, CallGraphContentProvider.sharedInstance, true });
params.add(new Object[] { gmonFile, gd, view_samplesFile_RefFile, view_samplesFile_DumpFile, FileHistogramContentProvider.sharedInstance, false });
params.add(new Object[] { gmonFile, gd, view_samplesFileT_RefFile, view_samplesFileT_DumpFile, FileHistogramContentProvider.sharedInstance, true });
params.add(new Object[] { gmonFile, gd, view_samplesFunction_RefFile, view_samplesFunction_DumpFile, FunctionHistogramContentProvider.sharedInstance, false });
params.add(new Object[] { gmonFile, gd, view_samplesFunctionT_RefFile, view_samplesFunctionT_DumpFile, FunctionHistogramContentProvider.sharedInstance, true });
params.add(new Object[] { gmonFile, gd, view_samplesFlat_RefFile, view_samplesFlat_DumpFile, FlatHistogramContentProvider.sharedInstance, false });
params.add(new Object[] { gmonFile, gd, view_samplesFlatT_RefFile, view_samplesFlatT_DumpFile, FlatHistogramContentProvider.sharedInstance, true });
}
return params;
}
use of org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder in project linuxtools by eclipse.
the class SampleProfField method getProfRate.
protected double getProfRate() {
double prof_rate = UNINITIALIZED;
Object o = viewer.getViewer().getInput();
if (o instanceof GmonDecoder) {
GmonDecoder decoder = (GmonDecoder) o;
HistogramDecoder histo = decoder.getHistogramDecoder();
prof_rate = histo.getProfRate();
char tUnit = histo.getTimeDimension();
switch(tUnit) {
case 's':
prof_rate /= 1000000000;
break;
case 'm':
prof_rate /= 1000000;
break;
case 'u':
prof_rate /= 1000;
break;
}
}
return prof_rate;
}
Aggregations