[lldb-dev] Running LLDB tests

Greg Clayton gclayton at apple.com
Fri Jan 28 15:00:37 PST 2011


You should need the code signing for any SnowLeopard system as far as I know. You need to reboot sometimes after doing the code signing to make things work in all cases. It sounds like you have debugging from lldb working, but not when it is running from Python.

I am guessing task_for_pid() is failing when being run under python.

The easiest thing to try is reboot and see if it works after a reboot. If not, then run python test with some environment variables set (the following is for bash):

LLDB_DEBUGSERVER_LOG_FILE=/tmp/debugserver.txt LLDB_DEBUGSERVER_LOG_FLAGS=0x800e0e ./dotest.py -v enum_types

This causes the tester to run just the tests in the "enum_types" directory which will run two tests. When you are done you should have a file in /tmp that you can send to me directly and I can take a look.

If you have a laptop, please do try and reboot first. I won't go into details, but there are some unexptected things that can make task_for_pid() fail which means we can't debug processes.

Greg Clayton


On Jan 28, 2011, at 2:30 PM, Warren.Paul at nokia.com wrote:

> I had done the first part of code-signing.txt, up to "The next steps are
> necessary on SnowLeopard".  The rest sounded like a workaround for an OS
> bug, and I have 10.6.5, so I figured I see if I could build LLDB without
> it.  I can, and I can debug it as well, so I assume that means I don't
> need the steps from "The next steps are necessary on SnowLeopard"?
> 
> I looked through a few of the failure logs and it looks like lldb is
> failing to launch the process.  I can have it launch a process when I run
> lldb from the command line, so perhaps the test script is finding a
> different lldb?  I've only build the debug version, so I'm hoping
> dotest.py is finding it at ./../build/Debug/?
> 
> My Python version is Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49).
> 
> Any ideas?
> 
> Thanks,
> Warren
> 
> -------------
> 
> runCmd: pro la
> output: 
> 
> Expecting pattern: Process .* launched:
> Not matched
> 
> FAIL
> 
> Traceback (most recent call last):
>  File 
> "/Users/warrenpaul/Dev/lldb/lldb/test/abbreviation_tests/TestAbbreviations.
> py", line 66, in test_with_dsym
>    self.running_abbreviations ()
>  File 
> "/Users/warrenpaul/Dev/lldb/lldb/test/abbreviation_tests/TestAbbreviations.
> py", line 112, in running_abbreviations
>    patterns = [ "Process .* launched: "])
>  File "/Users/warrenpaul/Dev/lldb/lldb/test/lldbtest.py", line 804, in
> expect
>    msg if msg else EXP_MSG(str, exe))
> AssertionError: False is not True : 'pro la' returns expected result
> 
> 
> 
> 
> 
> On 1/28/11 1:18 PM, "ext Greg Clayton" <gclayton at apple.com> wrote:
> 
>> Are you running these on MacOSX?
>> If so, did you follow the instructions in "lldb/docs/code-signing.txt"?
>> 
>> You will need to generate your own code signing certificate and then
>> debug a program at least once since the first time you used this code
>> signing certificate a dialog will pop up asking for permission where you
>> will have to enter your username/password. After this you should be able
>> to debug.
>> 
>> So to fix this, make sure you can debug something:
>> ./lldb /bin/ls
>> (lldb) run
>> 
>> ...
>> 
>> If this works, then the test suite should run for you.
>> 
>> Greg Clayton
>> 
>> On Jan 28, 2011, at 10:37 AM, Warren.Paul at nokia.com wrote:
>> 
>>> I've been playing around with LLDB and trying to get it to load some
>>> symbol files generated by the toolchains we support.  So far so good,
>>> but I need to start doing more lookups, etc. and would like to script
>>> these tests.  I thought I'd start with the LLDB tests and build up from
>>> there.  But when I run the tests I get mostly failures followed by a
>>> crash.  :(  Am I running them incorrectly, or missing some steps, Š ??
>>> Any help would be greatly appreciated.  Also, I haven't seen any logging
>>> in the Dwarf reader yet but have hit a few asserts.  Any tips for having
>>> my test scripts report anything the debugger doesn't like or expect in
>>> the Dwarf?
>>> 
>>> Thanks,
>>> Warren
>>> 
>>> Here's the output of the tests:
>>> 
>>> ./dotest.py -v
>>> 
>>> Session logs for test failures/errors will go into directory
>>> '2011-01-28-12_17_51'
>>> ----------------------------------------------------------------------
>>> Collected 178 tests
>>> 
>>>  1: test_nonrunning_command_abbreviations
>>> (TestAbbreviations.AbbreviationsTestCase) ...
>>> 
>>>    Hello!
>>> 
>>> ok
>>>  2: test_with_dsym (TestAbbreviations.AbbreviationsTestCase) ... FAIL
>>>  3: test_with_dwarf (TestAbbreviations.AbbreviationsTestCase) ... FAIL
>>>  4: test_with_dsym (TestAliases.AliasTestCase) ...
>>> 
>>> 
>>> Whoopee!
>>> 
>>> 
>>> 
>>> 
>>>    hello
>>> 
>>> 
>>>    hello
>>> 
>>> FAIL
>>>  5: test_with_dwarf (TestAliases.AliasTestCase) ...
>>> 
>>> 
>>> Whoopee!
>>> 
>>> 
>>> 
>>> 
>>>    hello
>>> 
>>> 
>>>    hello
>>> 
>>> FAIL
>>>  6: test_with_dsym_and_python_api (TestArrayTypes.ArrayTypesTestCase)
>>>     Use Python APIs to inspect variables with array types. ... FAIL
>>>  7: test_with_dsym_and_run_command (TestArrayTypes.ArrayTypesTestCase)
>>>     Test 'frame variable var_name' on some variables with array types.
>>> ... FAIL
>>>  8: test_with_dwarf_and_python_api (TestArrayTypes.ArrayTypesTestCase)
>>>     Use Python APIs to inspect variables with array types. ... FAIL
>>>  9: test_with_dwarf_and_run_command (TestArrayTypes.ArrayTypesTestCase)
>>>     Test 'frame variable var_name' on some variables with array types.
>>> ... FAIL
>>> 10: test_with_dsym_and_python_api (TestBitfields.BitfieldsTestCase)
>>>     Use Python APIs to inspect a bitfields variable. ... FAIL
>>> 11: test_with_dsym_and_run_command (TestBitfields.BitfieldsTestCase)
>>>     Test 'frame variable ...' on a variable with bitfields. ... FAIL
>>> 12: test_with_dwarf_and_python_api (TestBitfields.BitfieldsTestCase)
>>>     Use Python APIs to inspect a bitfields variable. ... FAIL
>>> 13: test_with_dwarf_and_run_command (TestBitfields.BitfieldsTestCase)
>>>     Test 'frame variable ...' on a variable with bitfields. ... FAIL
>>> 14: test_with_dsym (TestBreakpointCommand.BreakpointCommandTestCase)
>>>     Test a sequence of breakpoint command add, list, and remove. ...
>>> FAIL
>>> 15: test_with_dwarf (TestBreakpointCommand.BreakpointCommandTestCase)
>>>     Test a sequence of breakpoint command add, list, and remove. ...
>>> FAIL
>>> 16: test_with_dsym_and_python_api
>>> (TestBreakpointConditions.BreakpointConditionsTestCase)
>>>     Use Python APIs to set breakpoint conditions. ... FAIL
>>> 17: test_with_dsym_and_run_command
>>> (TestBreakpointConditions.BreakpointConditionsTestCase)
>>>     Exercise breakpoint condition with 'breakpoint modify -c <expr>
>>> id'. ... FAIL
>>> 18: test_with_dwarf_and_python_api
>>> (TestBreakpointConditions.BreakpointConditionsTestCase)
>>>     Use Python APIs to set breakpoint conditions. ... FAIL
>>> 19: test_with_dwarf_and_run_command
>>> (TestBreakpointConditions.BreakpointConditionsTestCase)
>>>     Exercise breakpoint condition with 'breakpoint modify -c <expr>
>>> id'. ... FAIL
>>> 20: test_with_dsym_and_python_api
>>> (TestBreakpointIgnoreCount.BreakpointIgnoreCountTestCase)
>>>     Use Python APIs to set breakpoint ignore count. ... FAIL
>>> 21: test_with_dsym_and_run_command
>>> (TestBreakpointIgnoreCount.BreakpointIgnoreCountTestCase)
>>>     Exercise breakpoint ignore count with 'breakpoint set -i <count>'.
>>> ... FAIL
>>> 22: test_with_dwarf_and_python_api
>>> (TestBreakpointIgnoreCount.BreakpointIgnoreCountTestCase)
>>>     Use Python APIs to set breakpoint ignore count. ... FAIL
>>> 23: test_with_dwarf_and_run_command
>>> (TestBreakpointIgnoreCount.BreakpointIgnoreCountTestCase)
>>>     Exercise breakpoint ignore count with 'breakpoint set -i <count>'.
>>> ... FAIL
>>> 24: test_with_dsym
>>> (TestBreakpointLocations.BreakpointLocationsTestCase)
>>>     Test breakpoint enable/disable for a breakpoint ID with multiple
>>> locations. ... FAIL
>>> 25: test_with_dwarf
>>> (TestBreakpointLocations.BreakpointLocationsTestCase)
>>>     Test breakpoint enable/disable for a breakpoint ID with multiple
>>> locations. ... FAIL
>>> 26: test_with_dsym_and_python_api
>>> (TestStaticVariables.StaticVariableTestCase)
>>>     Test Python APIs on file and class static variables. ... FAIL
>>> 27: test_with_dsym_and_run_command
>>> (TestStaticVariables.StaticVariableTestCase)
>>>     Test that file and class static variables display correctly. ...
>>> FAIL
>>> 28: test_with_dwarf_and_python_api
>>> (TestStaticVariables.StaticVariableTestCase)
>>>     Test Python APIs on file and class static variables. ... FAIL
>>> 29: test_with_dwarf_and_run_command
>>> (TestStaticVariables.StaticVariableTestCase)
>>>     Test that file and class static variables display correctly. ...
>>> FAIL
>>> 30: test_with_dsym_and_expr_parser (TestClassTypes.ClassTypesTestCase)
>>>     Test 'frame variable this' and 'expr this' when stopped inside a
>>> constructor. ... FAIL
>>> 31: test_with_dsym_and_python_api (TestClassTypes.ClassTypesTestCase)
>>>     Use Python APIs to create a breakpoint by (filespec, line). ...
>>> FAIL
>>> 32: test_with_dsym_and_run_command (TestClassTypes.ClassTypesTestCase)
>>>     Test 'frame variable this' when stopped on a class constructor.
>>> ... FAIL
>>> 33: test_with_dwarf_and_expr_parser (TestClassTypes.ClassTypesTestCase)
>>>     Test 'frame variable this' and 'expr this' when stopped inside a
>>> constructor. ... FAIL
>>> 34: test_with_dwarf_and_python_api (TestClassTypes.ClassTypesTestCase)
>>>     Use Python APIs to create a breakpoint by (filespec, line). ...
>>> FAIL
>>> 35: test_with_dwarf_and_run_command (TestClassTypes.ClassTypesTestCase)
>>>     Test 'frame variable this' when stopped on a class constructor.
>>> ... FAIL
>>> 36: test_with_dsym_and_python_api
>>> (TestClassTypesDisassembly.IterateFrameAndDisassembleTestCase)
>>>     Disassemble each call frame when stopped on C's constructor. ...
>>> FAIL
>>> 37: test_with_dsym_and_run_command
>>> (TestClassTypesDisassembly.IterateFrameAndDisassembleTestCase)
>>>     Disassemble each call frame when stopped on C's constructor. ...
>>> FAIL
>>> 38: test_with_dwarf_and_python_api
>>> (TestClassTypesDisassembly.IterateFrameAndDisassembleTestCase)
>>>     Disassemble each call frame when stopped on C's constructor. ...
>>> FAIL
>>> 39: test_with_dwarf_and_run_command
>>> (TestClassTypesDisassembly.IterateFrameAndDisassembleTestCase)
>>>     Disassemble each call frame when stopped on C's constructor. ...
>>> FAIL
>>> 40: test_command_source (TestCommandSource.CommandSourceTestCase)
>>>     Test that lldb command "command source" works correctly. ...
>>> 2011-01-28
>>> ok
>>> 41: test_with_dsym_command
>>> (TestConditionalBreak.ConditionalBreakTestCase)
>>>     Simulate a user using lldb commands to break on c() if called from
>>> a(). ... FAIL
>>> 42: test_with_dsym_python
>>> (TestConditionalBreak.ConditionalBreakTestCase)
>>>     Exercise some thread and frame APIs to break if c() is called by
>>> a(). ... FAIL
>>> 43: test_with_dwarf_command
>>> (TestConditionalBreak.ConditionalBreakTestCase)
>>>     Simulate a user using lldb commands to break on c() if called from
>>> a(). ... FAIL
>>> 44: test_with_dwarf_python
>>> (TestConditionalBreak.ConditionalBreakTestCase)
>>>     Exercise some thread and frame APIs to break if c() is called by
>>> a(). ... FAIL
>>> 45: test_with_dsym (TestDeadStrip.DeadStripTestCase)
>>>     Test breakpoint works correctly with dead-code stripping. ... FAIL
>>> 46: test_with_dwarf (TestDeadStrip.DeadStripTestCase)
>>>     Test breakpoint works correctly with dead-code stripping. ... FAIL
>>> 47: test_with_dsym (TestEnumTypes.EnumTypesTestCase)
>>>     Test 'image lookup -t days' and check for correct display. ... FAIL
>>> 48: test_with_dwarf (TestEnumTypes.EnumTypesTestCase)
>>>     Test 'image lookup -t days' and check for correct display. ... FAIL
>>> 49: test_choice (TestSequenceFunctions.SequenceFunctionsTestCase) ...
>>> ok
>>> 50: test_sample (TestSequenceFunctions.SequenceFunctionsTestCase) ...
>>> ok
>>> 51: test_shuffle (TestSequenceFunctions.SequenceFunctionsTestCase) ...
>>> ok
>>> 52: test_persistent_variables
>>> (TestPersistentVariables.PersistentVariablesTestCase)
>>>     Test that lldb persistent variables works correctly. ... FAIL
>>> 53: test_expr_commands (Test8638051.Radar8638051TestCase)
>>>     The following expression commands should not crash. ... FAIL
>>> 54: test_evaluate_expression_python
>>> (TestExprs.BasicExprCommandsTestCase)
>>>     Test SBFrame.EvaluateExpression() API for evaluating an
>>> expression. ... FAIL
>>> 55: test_expr_commands_can_handle_quotes
>>> (TestExprs.BasicExprCommandsTestCase)
>>>     Throw some expression commands with quotes at lldb. ... Stack dump:
>>> 0.    <eof> parser at end of file
>>> 1.    Parse:2:1: Generating code for declaration
>>> '$__lldb_valid_pointer_check'
>>> Segmentation fault
>>> 
>>> _______________________________________________
>>> lldb-dev mailing list
>>> lldb-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
>> 
> 





More information about the lldb-dev mailing list