Search in sources :

Example 6 with GmonDecoder

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;
}
Also used : STExportToCSVAction(org.eclipse.linuxtools.dataviewers.actions.STExportToCSVAction) IAction(org.eclipse.jface.action.IAction) GmonDecoder(org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder) IBinaryObject(org.eclipse.cdt.core.IBinaryParser.IBinaryObject)

Example 7 with GmonDecoder

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);
}
Also used : Path(org.eclipse.core.runtime.Path) PPC64ElfBinaryObjectWrapper(org.eclipse.linuxtools.internal.gprof.utils.PPC64ElfBinaryObjectWrapper) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) GmonDecoder(org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder) IBinaryObject(org.eclipse.cdt.core.IBinaryParser.IBinaryObject) IOException(java.io.IOException)

Example 8 with GmonDecoder

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;
}
Also used : Path(org.eclipse.core.runtime.Path) InputStreamReader(java.io.InputStreamReader) InputStream(java.io.InputStream) ArrayList(java.util.ArrayList) IOException(java.io.IOException) LineNumberReader(java.io.LineNumberReader) GmonDecoder(org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder) IBinaryObject(org.eclipse.cdt.core.IBinaryParser.IBinaryObject) File(java.io.File) Parameters(org.junit.runners.Parameterized.Parameters)

Example 9 with GmonDecoder

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;
}
Also used : GmonDecoder(org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder) HistogramDecoder(org.eclipse.linuxtools.internal.gprof.parser.HistogramDecoder)

Aggregations

GmonDecoder (org.eclipse.linuxtools.internal.gprof.parser.GmonDecoder)9 IBinaryObject (org.eclipse.cdt.core.IBinaryParser.IBinaryObject)4 IOException (java.io.IOException)2 Path (org.eclipse.core.runtime.Path)2 AbstractSTTreeViewer (org.eclipse.linuxtools.dataviewers.abstractviewers.AbstractSTTreeViewer)2 SampleProfField (org.eclipse.linuxtools.internal.gprof.view.fields.SampleProfField)2 HistRoot (org.eclipse.linuxtools.internal.gprof.view.histogram.HistRoot)2 TreeColumn (org.eclipse.swt.widgets.TreeColumn)2 File (java.io.File)1 InputStream (java.io.InputStream)1 InputStreamReader (java.io.InputStreamReader)1 LineNumberReader (java.io.LineNumberReader)1 PrintStream (java.io.PrintStream)1 ArrayList (java.util.ArrayList)1 IStatus (org.eclipse.core.runtime.IStatus)1 Status (org.eclipse.core.runtime.Status)1 IAction (org.eclipse.jface.action.IAction)1 STExportToCSVAction (org.eclipse.linuxtools.dataviewers.actions.STExportToCSVAction)1 SwitchSampleTimeAction (org.eclipse.linuxtools.internal.gprof.action.SwitchSampleTimeAction)1 HistogramDecoder (org.eclipse.linuxtools.internal.gprof.parser.HistogramDecoder)1