blob: c066dc58003d9f010914adcd83c38dc4a876d7a4 [file] [log] [blame]
"""Test that SBFrame::FindValue finds things but does not duplicate the entire variables list"""
from __future__ import print_function
import os
import sys
import time
import lldb
from lldbsuite.test.decorators import *
from lldbsuite.test.lldbtest import *
from lldbsuite.test import lldbutil
class SBFrameFindValueTestCase(TestBase):
mydir = TestBase.compute_mydir(__file__)
@add_test_categories(['pyapi'])
def test_formatters_api(self):
"""Test that SBFrame::FindValue finds things but does not duplicate the entire variables list"""
self.build()
self.setTearDownCleanup()
exe = self.getBuildArtifact("a.out")
# Create the target
target = self.dbg.CreateTarget(exe)
self.assertTrue(target, VALID_TARGET)
# Set the breakpoints
breakpoint = target.BreakpointCreateBySourceRegex(
'Set breakpoint here', lldb.SBFileSpec("main.cpp"))
self.assertTrue(breakpoint.GetNumLocations() > 0, VALID_BREAKPOINT)
# Launch the process, and do not stop at the entry point.
process = target.LaunchSimple(
None, None, self.get_process_working_directory())
self.assertTrue(process, PROCESS_IS_VALID)
# Frame #0 should be at our breakpoint.
threads = lldbutil.get_threads_stopped_at_breakpoint(
process, breakpoint)
self.assertTrue(len(threads) == 1)
self.thread = threads[0]
self.frame = self.thread.frames[0]
self.assertTrue(self.frame, "Frame 0 is valid.")
self.assertTrue(
self.frame.GetVariables(
True,
True,
False,
True).GetSize() == 2,
"variable count is off")
self.assertFalse(
self.frame.FindValue(
"NoSuchThing",
lldb.eValueTypeVariableArgument,
lldb.eDynamicCanRunTarget).IsValid(),
"found something that should not be here")
self.assertTrue(
self.frame.GetVariables(
True,
True,
False,
True).GetSize() == 2,
"variable count is off after failed FindValue()")
self.assertTrue(
self.frame.FindValue(
"a",
lldb.eValueTypeVariableArgument,
lldb.eDynamicCanRunTarget).IsValid(),
"FindValue() didn't find an argument")
self.assertTrue(
self.frame.GetVariables(
True,
True,
False,
True).GetSize() == 2,
"variable count is off after successful FindValue()")