You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
3.0 KiB
74 lines
3.0 KiB
import lldb
|
|
from lldbsuite.test.lldbtest import *
|
|
from lldbsuite.test import lldbutil
|
|
from lldbsuite.test.decorators import *
|
|
|
|
class TestTraceLoad(TestBase):
|
|
|
|
mydir = TestBase.compute_mydir(__file__)
|
|
NO_DEBUG_INFO_TESTCASE = True
|
|
|
|
def setUp(self):
|
|
TestBase.setUp(self)
|
|
if 'intel-pt' not in configuration.enabled_plugins:
|
|
self.skipTest("The intel-pt test plugin is not enabled")
|
|
|
|
def expectGenericHelpMessageForStartCommand(self):
|
|
self.expect("help thread trace start",
|
|
substrs=["Syntax: thread trace start [<trace-options>]"])
|
|
|
|
def testStartStopSessionFileThreads(self):
|
|
# it should fail for processes from json session files
|
|
self.expect("trace load -v " + os.path.join(self.getSourceDir(), "intelpt-trace", "trace.json"))
|
|
self.expect("thread trace start", error=True,
|
|
substrs=["error: Tracing is not supported. Can't trace a non-live process"])
|
|
|
|
# the help command should be the generic one, as it's not a live process
|
|
self.expectGenericHelpMessageForStartCommand()
|
|
|
|
# this should fail because 'trace stop' is not yet implemented
|
|
self.expect("thread trace stop", error=True,
|
|
substrs=["error: Failed stopping thread 3842849"])
|
|
|
|
@skipIf(oslist=no_match(['linux']), archs=no_match(['i386', 'x86_64']))
|
|
def testStartStopLiveThreads(self):
|
|
# The help command should be the generic one if there's no process running
|
|
self.expectGenericHelpMessageForStartCommand()
|
|
|
|
self.expect("thread trace start", error=True,
|
|
substrs=["error: Process not available"])
|
|
|
|
self.expect("file " + os.path.join(self.getSourceDir(), "intelpt-trace", "a.out"))
|
|
self.expect("b main")
|
|
|
|
self.expect("thread trace start", error=True,
|
|
substrs=["error: Process not available"])
|
|
|
|
# The help command should be the generic one if there's still no process running
|
|
self.expectGenericHelpMessageForStartCommand()
|
|
|
|
self.expect("r")
|
|
|
|
# the help command should be the intel-pt one now
|
|
self.expect("help thread trace start",
|
|
substrs=["Start tracing one or more threads with intel-pt.",
|
|
"Syntax: thread trace start [<thread-index> <thread-index> ...] [<intel-pt-options>]"])
|
|
|
|
self.expect("thread trace start",
|
|
patterns=["would trace tid .* with size_in_kb 4 and custom_config 0"])
|
|
|
|
self.expect("thread trace start --size 20 --custom-config 1",
|
|
patterns=["would trace tid .* with size_in_kb 20 and custom_config 1"])
|
|
|
|
# This fails because "trace stop" is not yet implemented.
|
|
self.expect("thread trace stop", error=True,
|
|
substrs=["error: Process is not being traced"])
|
|
|
|
self.expect("c")
|
|
# Now the process has finished, so the commands should fail
|
|
self.expect("thread trace start", error=True,
|
|
substrs=["error: Process must be launched"])
|
|
|
|
self.expect("thread trace stop", error=True,
|
|
substrs=["error: Process must be launched"])
|