Commit Graph

2665 Commits

Author SHA1 Message Date
Johnny Chen 0ebe5c539f I messed up the test case id to turn logging on and then off. It is "test_long_type_with_dsym",
not "test_long_long_type_with_dsym".

llvm-svn: 133562
2011-06-21 22:40:34 +00:00
Johnny Chen 97d774076e Add logging of 'commands' category, too.
llvm-svn: 133556
2011-06-21 22:16:07 +00:00
Greg Clayton c1869a5ee1 Don't print out the baton pointer value for simple Baton classes.
llvm-svn: 133541
2011-06-21 20:47:20 +00:00
Johnny Chen e1ba3123c1 rdar://problem/9649573 has captured the log files when running test_long_long_type_with_dsym() (which luckily failed) and the test session files for test failures.
llvm-svn: 133538
2011-06-21 19:59:45 +00:00
Johnny Chen fce70bb43b Add a test file "TestFailures.py" to try to capture test failures which occur when running
with no delay between successive test cases.  This one happend to capture a test failure where
the inferior shoud stop at a breakpoint but did not (radar will be filed to capture the log files
as well as the test session files):

[12:40:37] johnny:/Volumes/data/lldb/svn/trunk/test $ DEBUG_LLDB_LOG=/tmp/lldb.log DEBUG_GDB_REMOTE_LOG=/tmp/gdb-remote.log ./dotest.py -v -p TestFailures.py
LLDB-63
Path: /Volumes/data/lldb/svn/trunk
URL: https://johnny@llvm.org/svn/llvm-project/lldb/trunk
Repository Root: https://johnny@llvm.org/svn/llvm-project
Repository UUID: 91177308-0d34-0410-b5e6-96231b3b80d8
Revision: 133529
Node Kind: directory
Schedule: normal
Last Changed Author: jmolenda
Last Changed Rev: 133500
Last Changed Date: 2011-06-20 19:57:15 -0700 (Mon, 20 Jun 2011)



Session logs for test failures/errors/unexpected successes will go into directory '2011-06-21-12_40_42'
Command invoked: python ./dotest.py -v -p TestFailures.py
----------------------------------------------------------------------
Collected 10 tests

 1: test_char_type_with_dsym (TestFailures.DebugIntegerTypesFailures)
    Test that char-type variables are displayed correctly. ... ok
 2: test_char_type_with_dwarf (TestFailures.DebugIntegerTypesFailures)
    Test that char-type variables are displayed correctly. ... ok
 3: test_int_type_with_dsym (TestFailures.DebugIntegerTypesFailures)
    Test that int-type variables are displayed correctly. ... ok
 4: test_int_type_with_dwarf (TestFailures.DebugIntegerTypesFailures)
    Test that int-type variables are displayed correctly. ... ok
 5: test_long_long_type_with_dsym (TestFailures.DebugIntegerTypesFailures)
    Test that 'long long'-type variables are displayed correctly. ... FAIL
 6: test_long_long_type_with_dwarf (TestFailures.DebugIntegerTypesFailures)
    Test that 'long long'-type variables are displayed correctly. ... ok
 7: test_long_type_with_dsym (TestFailures.DebugIntegerTypesFailures)
    Test that long-type variables are displayed correctly. ... TestFailures.DebugIntegerTypesFailures.test_long_type_with_dsym
FAIL
 8: test_long_type_with_dwarf (TestFailures.DebugIntegerTypesFailures)
    Test that long-type variables are displayed correctly. ... FAIL
 9: test_short_type_with_dsym (TestFailures.DebugIntegerTypesFailures)
    Test that short-type variables are displayed correctly. ... ok
10: test_short_type_with_dwarf (TestFailures.DebugIntegerTypesFailures)
    Test that short-type variables are displayed correctly. ... ok

======================================================================
FAIL: test_long_long_type_with_dsym (TestFailures.DebugIntegerTypesFailures)
    Test that 'long long'-type variables are displayed correctly.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Volumes/data/lldb/svn/trunk/test/types/TestFailures.py", line 102, in test_long_long_type_with_dsym
    self.long_long_type()
  File "/Volumes/data/lldb/svn/trunk/test/types/TestFailures.py", line 129, in long_long_type
    self.generic_type_tester(set(['long long']))
  File "/Volumes/data/lldb/svn/trunk/test/types/AbstractBase.py", line 67, in generic_type_tester
    "stop reason = breakpoint"])
  File "/Volumes/data/lldb/svn/trunk/test/lldbtest.py", line 863, in expect
    msg if msg else EXP_MSG(str, exe))
AssertionError: False is not True : Process should be stopped due to breakpoint

======================================================================
FAIL: test_long_type_with_dsym (TestFailures.DebugIntegerTypesFailures)
    Test that long-type variables are displayed correctly.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Volumes/data/lldb/svn/trunk/test/types/TestFailures.py", line 87, in test_long_type_with_dsym
    self.long_type()
  File "/Volumes/data/lldb/svn/trunk/test/types/TestFailures.py", line 125, in long_type
    self.generic_type_tester(set(['long']))
  File "/Volumes/data/lldb/svn/trunk/test/types/AbstractBase.py", line 67, in generic_type_tester
    "stop reason = breakpoint"])
  File "/Volumes/data/lldb/svn/trunk/test/lldbtest.py", line 863, in expect
    msg if msg else EXP_MSG(str, exe))
AssertionError: False is not True : Process should be stopped due to breakpoint

======================================================================
FAIL: test_long_type_with_dwarf (TestFailures.DebugIntegerTypesFailures)
    Test that long-type variables are displayed correctly.
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Volumes/data/lldb/svn/trunk/test/types/TestFailures.py", line 94, in test_long_type_with_dwarf
    self.long_type()
  File "/Volumes/data/lldb/svn/trunk/test/types/TestFailures.py", line 125, in long_type
    self.generic_type_tester(set(['long']))
  File "/Volumes/data/lldb/svn/trunk/test/types/AbstractBase.py", line 67, in generic_type_tester
    "stop reason = breakpoint"])
  File "/Volumes/data/lldb/svn/trunk/test/lldbtest.py", line 863, in expect
    msg if msg else EXP_MSG(str, exe))
AssertionError: False is not True : Process should be stopped due to breakpoint

----------------------------------------------------------------------
Ran 10 tests in 5.617s

FAILED (failures=3)
Session logs for test failures/errors/unexpected successes can be found in directory '2011-06-21-12_40_42'
[12:40:47] johnny:/Volumes/data/lldb/svn/trunk/test $ 

llvm-svn: 133537
2011-06-21 19:47:11 +00:00
Johnny Chen d0abdab8d1 Fix the log channel for gdb-remote. It should be "gdb-remote" now, instead of "process.gdb-remote".
llvm-svn: 133534
2011-06-21 19:25:45 +00:00
Jason Molenda 98322e64c3 Replace examine-threads.c with a similar little utility I wrote a
while back.  By default its output will be less verbose than the
old examine-threads.c but adding the '-v' command line flag will
give all the information that examine-threads.c provided plus some.

Of note, this implementation can take a process name -- and it will
use the libproc API so it can match program names longer than 16
characters.

llvm-svn: 133500
2011-06-21 02:57:15 +00:00
Greg Clayton fe356d356a Added the ability to find functions from either a SBModule (find functions
only in a specific module), or in a SBTarget (all modules for a target).

llvm-svn: 133498
2011-06-21 01:34:41 +00:00
Johnny Chen ed492022f4 For now, insert some delays between succesive test cases in the test/types directory
if not already specified by the test driver (via ./dotest -w).  Remove the AbstractBase.setUp()
method definition when/if we find out the cause of the failures if no delays are inserted
between these test cases.

llvm-svn: 133495
2011-06-21 00:53:00 +00:00
Johnny Chen e5cc4b6330 Simplify the the generic AbstractBase.py test base for testing variable types.
We still have the the issue where running:

    ./dotest.py -v types

we have test failures where the inferior either runs to exited with status 0 or
the inferior stops but not because of breakpoint (for example):

runCmd: process status
output: Process 90060 stopped
* thread #1: tid = 0x2d03, 0x000000010000e2ca, stop reason = EXC_BAD_ACCESS (code=2, address=0x10000e2ca)
  frame #0: 0x000000010000e2ca

There are two cases where the inferior stops for the breakpoint (good), but the expression parser
prints out the wrong information.  The two failures are:

Failure-TestFloatTypesExpr.FloatTypesExprTestCase.test_double_type_with_dsym.log
Failure-TestFloatTypesExpr.FloatTypesExprTestCase.test_double_type_with_dwarf.log

I'll file a radar on the two expression parser misbehave, while continue investigating why the
inferior stops for the wrong reason or does not stop at all.

For now, you'll need to do:

    ./dotest.py -v -w types

llvm-svn: 133488
2011-06-21 00:13:15 +00:00
Peter Collingbourne d155c0b451 Remove duplicate m_monitor field from LaunchArgs
Fixes segfault when launching process on Linux.

llvm-svn: 133484
2011-06-20 23:55:58 +00:00
Peter Collingbourne 6f2b85221d Set LLDB_SESSION_DIRNAME to absolute path
This is to ensure that session files are written to the correct
directory if the -r option is given.

llvm-svn: 133483
2011-06-20 23:55:53 +00:00
Jim Ingham 91da589d7e The "-r" option should work for both "-n" and "-s", but it was only set to work for "-s".
llvm-svn: 133479
2011-06-20 23:38:11 +00:00
Johnny Chen 3343c13c6e Minor module-level docstring change.
llvm-svn: 133476
2011-06-20 22:33:35 +00:00
Johnny Chen dd68ab83b9 Test lldb Python API object's default constructor and make sure it is invalid
after initial construction.

There are two exceptions to the above general rules, though; the API objects are
SBCommadnReturnObject and SBStream.

llvm-svn: 133475
2011-06-20 22:30:48 +00:00
Johnny Chen 91016396b9 Change to get around the nested ifeq woes on OS X Snow Leopard:
../make/Makefile.rules:217: *** missing `endif'.  Stop.

llvm-svn: 133466
2011-06-20 20:08:26 +00:00
Peter Collingbourne aa14adc639 Add dependency tracking/clean rule to interpreter makefile
llvm-svn: 133463
2011-06-20 19:07:07 +00:00
Peter Collingbourne 3b3531618b Enable the "make test" rule in the root Makefile
llvm-svn: 133462
2011-06-20 19:06:57 +00:00
Peter Collingbourne b0589f16a4 Add a default rule to test/Makefile which runs the test suite
llvm-svn: 133461
2011-06-20 19:06:51 +00:00
Peter Collingbourne d6824de00e Modify TestHelp to search for LLDB-Info.plist in the correct place
This is required to run the test suite outside of the source tree
or on a case sensitive file system.

llvm-svn: 133460
2011-06-20 19:06:45 +00:00
Peter Collingbourne 7477e10dc8 Create a _lldb.so symlink in the bin directory
This is required to run the test suite without installing.

llvm-svn: 133459
2011-06-20 19:06:35 +00:00
Peter Collingbourne 28b5eb14c7 Have dotest.py search for test cases in its own directory by default,
rather than the current directory.

This is required to run the test suite outside of the source tree.

llvm-svn: 133458
2011-06-20 19:06:29 +00:00
Peter Collingbourne 19f48d51f6 Add a builder module for Linux (plus some refactoring)
llvm-svn: 133457
2011-06-20 19:06:20 +00:00
Peter Collingbourne 518f03d6ba Add Linux rules to test makefile
llvm-svn: 133456
2011-06-20 19:06:04 +00:00
Johnny Chen 96fda9ba1e Revert r133358 which forgoes printing of breakpoint command when doing a breakpoint list where the description
level is not eDescriptionLevelBrief.  It broke test/TestAliases.py.  Besides, to have a brief breakpoint list,
you can do "breakpoint list -b".

llvm-svn: 133455
2011-06-20 18:59:49 +00:00
Jim Ingham f72ce3a216 Use the dyld_mode, image_infos & image_infos_count passed into the shared library notification function
to update libraries rather than reading the whole all_imaage_infos structure every time we get notified.

llvm-svn: 133448
2011-06-20 17:32:44 +00:00
Johnny Chen 4cfd07ef07 Add TestInlinedFrame.py to exercise the newly added SBFrame APIs: IsInlined() and GetFunctionName().
llvm-svn: 133404
2011-06-20 00:26:39 +00:00
Greg Clayton b537fd51d2 Bumping Xcode project version for lldb-63.
llvm-svn: 133378
2011-06-19 04:35:24 +00:00
Greg Clayton 5cf21f5f06 Fixed a crasher where we were accessing a symbol with a bad index.
llvm-svn: 133377
2011-06-19 04:26:01 +00:00
Greg Clayton 5861d3e6f0 Make sure we have a valid object file before we try getting the symbol table
so we avoid crashing.

llvm-svn: 133376
2011-06-19 04:02:02 +00:00
Greg Clayton 090d098fc2 Fixed a case where LLDB would crash if we get C++ operators with invalid
operator counts due to bad debug DWARF debug info. We now verify the operator
has a valid number of params using the clang operator tables.

llvm-svn: 133375
2011-06-19 03:43:27 +00:00
Peter Collingbourne ba23ca085f Switch from USEC_PER_SEC/NSEC_PER_SEC/NSEC_PER_USEC to TimeValue constants
Fixes the Linux build.

llvm-svn: 133370
2011-06-18 23:52:14 +00:00
Greg Clayton 036ff1162f Don't print the baton when a breakpoint has a callback since it is pretty
useless to show.

llvm-svn: 133358
2011-06-18 20:12:02 +00:00
Greg Clayton 316d498baa Added two new API functions to SBFrame:
const char *
SBFrame::GetFunctionName();

bool
SBFrame::IsInlined();


The first one will return the correct name for a frame. The name of a frame is:
- the name of the inlined function (if there is one)
- the name of the concrete function (if there is one)
- the name of the symbol (if there is one)
- NULL

We also can now easily check if a frame is an inline function or not.

llvm-svn: 133357
2011-06-18 20:06:08 +00:00
Greg Clayton 4e4294bdee Added a new format for displaying an array of characters: eFormatCharArray
This us useful because sometomes you have to show a single character as: 'a'
(using eFormatChar) and other times you might have an array of single 
charcters for display as: 'a' 'b' 'c', and other times you might want to 
show the contents of buffer of characters that can contain non printable
chars: "\0\x22\n123". 

This also fixes an issue that currently happens when you have a single character
C string (const char *a = "a"; or char b[1] = { 'b' };) that was being output
as "'a'" incorrectly due to the way the eFormatChar format output worked.

llvm-svn: 133316
2011-06-17 23:50:44 +00:00
Greg Clayton c662ec8bd3 Fixed variable parsing to not parse block variables over and over due to an
issue in the way block variables are marked as parsed. In the DWARF parser we
always parse all blocks for a function at once, so we can mark all blocks as
having all variables parsed and avoid recursive function calls to try and
reparse things that have already been handled.

Fixed an issue with how variables get scoped into blocks. The DWARF parser can
now handle abtract class definitions that contain concrete static variables.
When the concrete instance of the class functions get instantiated, they will
track down the concrete block for the abtract block and add the variable to
each block.

llvm-svn: 133302
2011-06-17 22:10:16 +00:00
Johnny Chen f733f7d730 Test case test_connect_remote() has been passing consistently for some times.
Let's remove the @expectedFailure marker from it.

llvm-svn: 133294
2011-06-17 21:17:56 +00:00
Johnny Chen 61c71e75cd Modify a bunch of docstrings to be more correct. Check the SBError.Success() after attaching.
Also eat the stdout of the spawned "hello_world" process if not in TraceOn() mode.

llvm-svn: 133280
2011-06-17 19:38:48 +00:00
Johnny Chen a807902031 Add a bunch of test cases to TestHelloWorld.py to exercise combinations of dwarf/dsym debug setup.
Among them are test cases to exercise SBTarget.AttachToProcessWithName(); we attach to "hello_world",
and verify that, after attachment, the currently selected target indeed matches "hello_world".

llvm-svn: 133279
2011-06-17 19:21:30 +00:00
Johnny Chen 9f3552083d Localize the finding of our to-be-debugged executable in one spot during the setUp() phase.
Change the executable name to be "hello_world".

llvm-svn: 133277
2011-06-17 18:47:58 +00:00
Greg Clayton f3dd93c888 Added the notion of an system root for SDKs. This is a directory where all
libraries and headers exist. This can be specified using the platform select
function:

platform select --sysroot /Volumes/remote-root remote-macosx

Each platform subclass is free to interpret the sysroot as needed.

Expose the new SDK root directory through the SBDebugger class. 

Fixed an issue with the GDB remote protocol where unimplemented packets were
not being handled correctly.

llvm-svn: 133231
2011-06-17 03:31:01 +00:00
Johnny Chen b0f5372bb3 Modify docstring.
llvm-svn: 133230
2011-06-17 03:22:58 +00:00
Greg Clayton 73bf5dbd16 Improved the packet throughput when debugging with GDB remote by over 3x on
darwin (not sure about other platforms).

Modified the communication and connection classes to not require the
BytesAvailable function. Now the "Read(...)" function has a timeout in
microseconds.

Fixed a lot of assertions that were firing off in certain cases and replaced
them with error output and code that can deal with the assertion case.

llvm-svn: 133224
2011-06-17 01:22:15 +00:00
Johnny Chen 2cd8327605 o TestHelloWorld.py:
Add a test case for the SBTarget::AttachToProcessWithID() API call.

o main.c:

  The change goes with the added test case test_with_dwarf_and_attach_to_process_with_id_api() above.

o SBTarget.cpp:

  Checks whether we're in synchronous mode.  If yes, let's wait for the process to stop right after attaching.

llvm-svn: 133223
2011-06-17 00:51:15 +00:00
Johnny Chen 0d4f6dd01e o lldbutil.py:
For the print_stacktrace(thread, string_buffer = False) function, if we have debug info
  for a frame function, let's also emit the args for the current function.

o TestFrameUtils.py:

  Add stronger assertTrue for frame0's args.

o TestPrintStackTraces.py:

  Launch the inferior with ["abc", "xyz"] and expect '(int)argc=3' in the stack traces, since
  by design the inferior is built with debug info.

llvm-svn: 133204
2011-06-16 22:07:48 +00:00
Greg Clayton df509331c8 Add some extra linker flags to LLDB.framework so we can track down why we
aren't getting debug info from the liblldb-core.a file in our build server
builds.

llvm-svn: 133193
2011-06-16 21:22:36 +00:00
Caroline Tice d61c10bc79 Add 'batch_mode' to CommandInterpreter. Modify InputReaders to
not write output (prompts, instructions,etc.) if the CommandInterpreter
is in batch_mode.

Also, finish updating InputReaders to write to the asynchronous stream,
rather than using the Debugger's output file directly.

llvm-svn: 133162
2011-06-16 16:27:19 +00:00
Johnny Chen 5a0bee7c5f The extra burden for the Python API test case to assign its process object to self.process
in order to have its process cleaned up (terminated) upon tearDown is gone for good.
Let's simplify a bunch of Python API test cases.

llvm-svn: 133097
2011-06-15 22:14:12 +00:00
Johnny Chen 5b67ca8cc4 Simplify the base test class. Remove keyword argument setCookie from TestBase.runCmd() and
remove the self.runStarted attribute since the automatic shutdown of processes associated
with the targets are now performed automatically.

llvm-svn: 133092
2011-06-15 21:38:39 +00:00
Johnny Chen 3794ad95a7 Add an API to SBDebugger class:
bool SBDebugger::DeleteTarget(lldb::SBTarget &target);

which is used in the test tearDown() phase to cleanup the debugger's target list
so that it won't grow larger and larger as test cases are executed.  This is also
a good opportunity to get rid of the arcane requirement that test cases exercising
the Python API must assign the process object to self.process so that it gets
shutdown gracefully.  Instead, the shutdown of the process associated with each
target is now being now automatically.

Also get rid of an API from SBTarget class:

    SBTarget::DeleteTargetFromList(lldb_private::TargetList *list);

llvm-svn: 133091
2011-06-15 21:24:24 +00:00