Community
Participate
Working Groups
I've installed the OProfiler plug-in on RHEL 5.0 running Helios, but have been unable, so far, to get it to generate a profile and run. I am currently faced with a dialog, "Problem Occurred": 'Launching MyService (1)' has encountered a problem. Launch configuration MyService (1) at file:/home/user/workspace/.metadata/.plugins/org.eclipse.debug.core/.launches/MyService%20(1).launch does not exist. If I attempt to view the Profile Configurations, the profile does not appear and I am unable to create a new profile. Selecting the Add Profile button does nothing.
I cleared some things and recreated the profile, but now I've managed to get different errors. This is from the Error Log: Problems occurred when invoking code from plug-in: "org.eclipse.jface". java.lang.ExceptionInInitializerError at org.eclipse.linuxtools.oprofile.launch.configuration.OprofileCounter.getCounters(OprofileCounter.java:64) at org.eclipse.linuxtools.oprofile.launch.configuration.OprofileEventConfigTab.<init>(OprofileEventConfigTab.java:68) at org.eclipse.linuxtools.oprofile.launch.configuration.OprofileLaunchConfigurationTabGroup.getProfileTabs(OprofileLaunchConfigurationTabGroup.java:19) at org.eclipse.linuxtools.profiling.launch.ProfileLaunchConfigurationTabGroup.createTabs(ProfileLaunchConfigurationTabGroup.java:32) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupWrapper.createTabs(LaunchConfigurationTabGroupWrapper.java:137) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$9.run(LaunchConfigurationTabGroupViewer.java:864) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.createGroup(LaunchConfigurationTabGroupViewer.java:873) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.showInstanceTabsFor(LaunchConfigurationTabGroupViewer.java:779) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.displayInstanceTabs(LaunchConfigurationTabGroupViewer.java:735) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer$8.run(LaunchConfigurationTabGroupViewer.java:623) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.inputChanged(LaunchConfigurationTabGroupViewer.java:640) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput0(LaunchConfigurationTabGroupViewer.java:602) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationTabGroupViewer.setInput(LaunchConfigurationTabGroupViewer.java:578) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.handleLaunchConfigurationSelectionChanged(LaunchConfigurationsDialog.java:940) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog$3.selectionChanged(LaunchConfigurationsDialog.java:559) at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:867) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49) at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175) at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:865) at org.eclipse.jface.viewers.StructuredViewer.handlePostSelect(StructuredViewer.java:1205) at org.eclipse.jface.viewers.StructuredViewer$5.widgetSelected(StructuredViewer.java:1230) at org.eclipse.jface.util.OpenStrategy.firePostSelectionEvent(OpenStrategy.java:251) at org.eclipse.jface.util.OpenStrategy.access$5(OpenStrategy.java:245) at org.eclipse.jface.util.OpenStrategy$3.run(OpenStrategy.java:419) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3515) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3164) at org.eclipse.jface.window.Window.runEventLoop(Window.java:825) at org.eclipse.jface.window.Window.open(Window.java:801) at org.eclipse.debug.internal.ui.launchConfigurations.LaunchConfigurationsDialog.open(LaunchConfigurationsDialog.java:1134) at org.eclipse.debug.ui.DebugUITools$1.run(DebugUITools.java:398) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:406) at org.eclipse.debug.ui.DebugUITools.openLaunchConfigurationDialogOnGroup(DebugUITools.java:340) at org.eclipse.debug.ui.actions.OpenLaunchDialogAction.run(OpenLaunchDialogAction.java:81) at org.eclipse.jface.action.Action.runWithEvent(Action.java:498) at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584) at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501) at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1267) at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1061) at org.eclipse.jface.action.ActionContributionItem$9.handleEvent(ActionContributionItem.java:1284) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3540) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3161) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575) at org.eclipse.equinox.launcher.Main.run(Main.java:1408) Caused by: java.lang.NullPointerException at org.eclipse.linuxtools.oprofile.core.opxml.info.InfoAdapter.createHeaders(InfoAdapter.java:131) at org.eclipse.linuxtools.oprofile.core.opxml.info.InfoAdapter.process(InfoAdapter.java:124) at org.eclipse.linuxtools.oprofile.core.linux.OpxmlRunner.run(OpxmlRunner.java:106) at org.eclipse.linuxtools.oprofile.core.linux.LinuxOpxmlProvider$OpInfoRunner.run(LinuxOpxmlProvider.java:55) at org.eclipse.linuxtools.oprofile.core.linux.LinuxOpxmlProvider$OpInfoRunner.run0(LinuxOpxmlProvider.java:46) at org.eclipse.linuxtools.oprofile.core.daemon.OpInfo.getInfo(OpInfo.java:85) at org.eclipse.linuxtools.oprofile.core.Oprofile._initializeOprofileCore(Oprofile.java:94) at org.eclipse.linuxtools.oprofile.core.Oprofile.initializeOprofileModule(Oprofile.java:64) at org.eclipse.linuxtools.oprofile.core.Oprofile.<clinit>(Oprofile.java:43) ... 73 more
This stack trace was also in the error log (An internal error occurred during: "Launching MyService".: java.lang.NoClassDefFoundError: Could not initialize class org.eclipse.linuxtools.oprofile.core.Oprofile at org.eclipse.linuxtools.oprofile.core.linux.LinuxOpcontrolProvider.setupDaemon(LinuxOpcontrolProvider.java:179) at org.eclipse.linuxtools.oprofile.launch.launching.AbstractOprofileLaunchConfigurationDelegate.oprofileSetupDaemon(AbstractOprofileLaunchConfigurationDelegate.java:130) at org.eclipse.linuxtools.oprofile.launch.launching.OprofileLaunchConfigurationDelegate.preExec(OprofileLaunchConfigurationDelegate.java:42) at org.eclipse.linuxtools.oprofile.launch.launching.AbstractOprofileLaunchConfigurationDelegate.launch(AbstractOprofileLaunchConfigurationDelegate.java:66) at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853) at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702) at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:924) at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1128) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
From the stack trace and type of error, this would seem to be an issue with the oprofile kernel module not being loaded. Also it could be a result of not entering the correct password when prompted for it (which would cause the module to not be loaded). Could you try manually loading the oprofile kernel module before starting Eclipse? The command would be "opcontrol --init" run as root. To confirm it is in fact properly loaded you could check for the file "/dev/oprofile/cpu_type" or "/proc/sys/dev/oprofile/cpu_type".
Thanks for getting back to me Roland. After "opcontrol --init", I get the below stacktrace. I found the /dev/oprofile/cpu_type file to be empty. Strange that I should need to include the kernel module for application level profiling, but I suspect oprofile needs its kernel hooks. java.lang.ExceptionInInitializerError at org.eclipse.linuxtools.oprofile.core.linux.LinuxOpcontrolProvider.setupDaemon(LinuxOpcontrolProvider.java:179) at org.eclipse.linuxtools.oprofile.launch.launching.AbstractOprofileLaunchConfigurationDelegate.oprofileSetupDaemon(AbstractOprofileLaunchConfigurationDelegate.java:130) at org.eclipse.linuxtools.oprofile.launch.launching.OprofileLaunchConfigurationDelegate.preExec(OprofileLaunchConfigurationDelegate.java:42) at org.eclipse.linuxtools.oprofile.launch.launching.AbstractOprofileLaunchConfigurationDelegate.launch(AbstractOprofileLaunchConfigurationDelegate.java:66) at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:853) at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:702) at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:924) at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1128) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) Caused by: java.lang.NullPointerException at org.eclipse.linuxtools.oprofile.core.opxml.info.InfoAdapter.createHeaders(InfoAdapter.java:131) at org.eclipse.linuxtools.oprofile.core.opxml.info.InfoAdapter.process(InfoAdapter.java:124) at org.eclipse.linuxtools.oprofile.core.linux.OpxmlRunner.run(OpxmlRunner.java:106) at org.eclipse.linuxtools.oprofile.core.linux.LinuxOpxmlProvider$OpInfoRunner.run(LinuxOpxmlProvider.java:55) at org.eclipse.linuxtools.oprofile.core.linux.LinuxOpxmlProvider$OpInfoRunner.run0(LinuxOpxmlProvider.java:46) at org.eclipse.linuxtools.oprofile.core.daemon.OpInfo.getInfo(OpInfo.java:85) at org.eclipse.linuxtools.oprofile.core.Oprofile._initializeOprofileCore(Oprofile.java:94) at org.eclipse.linuxtools.oprofile.core.Oprofile.initializeOprofileModule(Oprofile.java:64) at org.eclipse.linuxtools.oprofile.core.Oprofile.<clinit>(Oprofile.java:43) ... 9 more
It seems as if the oprofile module does in fact get loaded (the file is clearly present), but an empty cpu_type might indicate that there is no support for your processor. What version of oprofile (not the eclipse-plugin but the tool itself) are you running? (An update to a newer version may fix this). Alternatively you could try forcing the module to run in timer mode (http://oprofile.sourceforge.net/doc/detailed-parameters.html section 4.3).
Looks like oprofile 0.9.4. I'll give timer mode a shot. I downloaded Zoom which seems to run on oprofile and works, but I really wanted something integrated with Eclipse.
(In reply to comment #6) > Looks like oprofile 0.9.4. I'll give timer mode a shot. I downloaded Zoom > which seems to run on oprofile and works, but I really wanted something > integrated with Eclipse. Oh well, tried in timer mode, but Eclipse oprofile complains now because it can't execute opcontrol --init in timer mode.
I believe this is happening because of stale entries in the /root/.oprofile/daemonrc file. If you delete that file, then the opcontrol --init will succeed. The fact that cpu_type was empty would be a strong indicator that the 0.9.4 version doesn't support your processor. If you wanted support for events other than just timer interrupts, you could always try updating to a new oprofile version and see if that fixes your issue.
It seems like this may be a problem specific to older versions of the Oprofile upstream tool. At the very least, the empty cpu_type file would indicate some sort of lack of support, so I'll be marking this as NOT_ECLIPSE. If this can be reproduced on just the command line, then I'd recommend filing a bug with Oprofile upstream : http://oprofile.sourceforge.net/bugs/