[lldb-dev] [Bug 42953] New: how to lldb android app

2019-08-09 Thread via lldb-dev
https://bugs.llvm.org/show_bug.cgi?id=42953

Bug ID: 42953
   Summary: how to lldb android app
   Product: lldb
   Version: 8.0
  Hardware: PC
OS: Windows NT
Status: NEW
  Severity: enhancement
  Priority: P
 Component: All Bugs
  Assignee: lldb-dev@lists.llvm.org
  Reporter: mryus...@live.com
CC: jdevliegh...@apple.com, llvm-b...@lists.llvm.org

Because the project needs to develop debugger, so I use lldb API for debugger
development, debugger works well on PC system, but now we are debugging Android
apk, debugger can not work properly.

   In the debugger code, we use lldb API createTarget (". apk"), which is
not supported by the system prompt. I use createTarget (". so") to create
the target, but lldb API executes errors, such as acquiring stack information
errors.

   Because I don't know how to debug Android program, so I don't know if my
method is correct, please give me guidance.

-- 
You are receiving this mail because:
You are the assignee for the bug.___
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev


Re: [lldb-dev] How do I use lit to only run the lldb test suite, now that dotest multiprocessing capabilities have been removed?

2019-08-09 Thread Jonas Devlieghere via lldb-dev
So far the only thing that changed by removing multiprocess is that
`--no-multiprocess` is always enabled. Everything else you describe is
still possible, and will continue to be possible.

Even when we remove the driver functionality from dotest.py this will
all continue to work. The only difference is that dotest.py will
operate on a single file after being invoked by some other driver. The
problem you describe with the dual arguments seems relatively easy to
fix by loading a different configuration in lit. It's not something
I've looked at yet, because everything we care about is configurable
from CMake or overridable by passing --params to lit.


On Fri, Aug 9, 2019 at 1:30 PM Ted Woodward  wrote:
>
> Hi Jonas,
>
> What I need is a way to run the test suite with arbitrary command line 
> arguments. Sometimes I want to run one or more tests with -f, sometimes I 
> want to run one or more test files with -p, and sometimes I want to run the 
> entire suite, either in parallel or 1 at a time (--no-multiprocess). I might 
> be running from a directory where I've built lldb (but not clang, using clang 
> from an arbitrary location), a directory where I've built everything (but in 
> this case we set everything up with cmake), or a directory where I've 
> checkout out just the sources and have copied the binaries from a 
> distribution, so no cmake.
>
> dotest used to handle these cases; how do I handle them now?
>
> In our environment, lldb will launch and connect to the hexagon simulator, 
> much like how it launches and connects to debugserver or lldb-server. But it 
> has to use a specific version of clang, because we've found that if we have 
> mismatches in clang/simulator/RTOS, bad things can happen. User code is in a 
> shared library that gets loaded by a wrapper run under the RTOS. The RTOS, 
> wrapper and user code all need to be built with the same complier and c/c++ 
> libraries.
>
> Ted
>
> > -Original Message-
> > From: Jonas Devlieghere 
> > Sent: Friday, August 9, 2019 3:18 PM
> > To: Ted Woodward 
> > Cc: LLDB 
> > Subject: [EXT] Re: How do I use lit to only run the lldb test suite, now 
> > that
> > dotest multiprocessing capabilities have been removed?
> >
> > Hey Ted,
> >
> > On Thu, Aug 8, 2019 at 2:08 PM Ted Woodward 
> > wrote:
> > >
> > > Thanks Jonas.
> > >
> > > Is full support for --param fairly recent? I tried it with a version of 
> > > our
> > master, based on top-of-tree from about a month ago, and it didn't work 
> > quite
> > right. It's passing the dotest args, but it's also generating some args, so 
> > I'm
> > seeing odd effects.
> >
> > It's not something I touched recently, but it's always possible they made 
> > some
> > changes in LLVM.
> >
> > > Here is my run line:
> > > bin/python bin/llvm-lit /local/mnt/ted/8.4/llvm/lldb/lit/Suite --param
> > 'dotest-args=-A v66 -C /prj/dsp/qdsp6/release/internal/HEXAGON/branch-
> > 8.4/linux64/latest/Tools/bin/hexagon-clang --executable
> > /local/scratch/ted/8.4/build/bin/lldb -t -v -f
> > RecursiveTypesTestCase.test_recursive_type_1_dwarf'
> > >
> > > I only want to run RecursiveTyepsTestCase.test_recursive_type_1_dwarf,
> > but it's running the whole test suite.
> >
> > Do you know about the lldb-dotest binary? You can still use it to invoke a
> > single test, similar to how lit does it. You should be able to just pass 
> > your
> > arguments to that.
> >
> > Here's a dotest line from the run:
> > >
> > > /local/mnt/ted/8.4/build/bin/python
> > > /local/mnt/ted/8.4/llvm/lldb/test/dotest.py -q --arch=v66 -s
> > > /local/mnt/ted/8.4/build/lldb-test-traces --build-dir
> > > /local/mnt/ted/8.4/build/lldb-test-build.noindex -S nm -u CXXFLAGS -u
> > > CFLAGS --executable /local/mnt/ted/8.4/build/./bin/lldb --dsymutil
> > > /local/mnt/ted/8.4/build/./bin/dsymutil --filecheck
> > > /local/mnt/ted/8.4/build/./bin/FileCheck -C
> > > /local/mnt/ted/8.4/build/./bin/clang --env ARCHIVER=/usr/bin/ar --env
> > > OBJCOPY=/usr/bin/objcopy -A v66 -C
> > > /prj/dsp/qdsp6/release/internal/HEXAGON/branch-8.4/linux64/latest/Tool
> > > s/bin/hexagon-clang --executable /local/scratch/ted/8.4/build/bin/lldb
> > > -t -v -f RecursiveTypesTestCase.test_recursive_type_1_dwarf --env
> > > LLVM_LIBS_DIR=/local/mnt/ted/8.4/build/./lib
> > > /local/mnt/ted/8.4/llvm/lldb/packages/Python/lldbsuite/test/functional
> > > ities/breakpoint/debugbreak -p TestDebugBreak.py
> > >
> > >
> > > It's got both --arch= and -A, -C is set to my build directory clang as 
> > > well as the
> > clang I told it to use, --executable is set twice, and it's got -f
> > RecursiveTypesTestCase.test_recursive_type_1_dwarf and -p
> > TestDebugBreak.py .
> >
> > Both lit and lldb-dotest are configured using the dotest arguments that we 
> > can
> > configure at CMake configuration time. That would explain where the extra
> > options come from. If those are not the ones you want, you can still invoke
> > dotest.py directly.
> >
> > >
> > > These tests that do a "process launch" 

Re: [lldb-dev] How do I use lit to only run the lldb test suite, now that dotest multiprocessing capabilities have been removed?

2019-08-09 Thread Ted Woodward via lldb-dev
Hi Jonas,

What I need is a way to run the test suite with arbitrary command line 
arguments. Sometimes I want to run one or more tests with -f, sometimes I want 
to run one or more test files with -p, and sometimes I want to run the entire 
suite, either in parallel or 1 at a time (--no-multiprocess). I might be 
running from a directory where I've built lldb (but not clang, using clang from 
an arbitrary location), a directory where I've built everything (but in this 
case we set everything up with cmake), or a directory where I've checkout out 
just the sources and have copied the binaries from a distribution, so no cmake.

dotest used to handle these cases; how do I handle them now?

In our environment, lldb will launch and connect to the hexagon simulator, much 
like how it launches and connects to debugserver or lldb-server. But it has to 
use a specific version of clang, because we've found that if we have mismatches 
in clang/simulator/RTOS, bad things can happen. User code is in a shared 
library that gets loaded by a wrapper run under the RTOS. The RTOS, wrapper and 
user code all need to be built with the same complier and c/c++ libraries.

Ted

> -Original Message-
> From: Jonas Devlieghere 
> Sent: Friday, August 9, 2019 3:18 PM
> To: Ted Woodward 
> Cc: LLDB 
> Subject: [EXT] Re: How do I use lit to only run the lldb test suite, now that
> dotest multiprocessing capabilities have been removed?
> 
> Hey Ted,
> 
> On Thu, Aug 8, 2019 at 2:08 PM Ted Woodward 
> wrote:
> >
> > Thanks Jonas.
> >
> > Is full support for --param fairly recent? I tried it with a version of our
> master, based on top-of-tree from about a month ago, and it didn't work quite
> right. It's passing the dotest args, but it's also generating some args, so 
> I'm
> seeing odd effects.
> 
> It's not something I touched recently, but it's always possible they made some
> changes in LLVM.
> 
> > Here is my run line:
> > bin/python bin/llvm-lit /local/mnt/ted/8.4/llvm/lldb/lit/Suite --param
> 'dotest-args=-A v66 -C /prj/dsp/qdsp6/release/internal/HEXAGON/branch-
> 8.4/linux64/latest/Tools/bin/hexagon-clang --executable
> /local/scratch/ted/8.4/build/bin/lldb -t -v -f
> RecursiveTypesTestCase.test_recursive_type_1_dwarf'
> >
> > I only want to run RecursiveTyepsTestCase.test_recursive_type_1_dwarf,
> but it's running the whole test suite.
> 
> Do you know about the lldb-dotest binary? You can still use it to invoke a
> single test, similar to how lit does it. You should be able to just pass your
> arguments to that.
> 
> Here's a dotest line from the run:
> >
> > /local/mnt/ted/8.4/build/bin/python
> > /local/mnt/ted/8.4/llvm/lldb/test/dotest.py -q --arch=v66 -s
> > /local/mnt/ted/8.4/build/lldb-test-traces --build-dir
> > /local/mnt/ted/8.4/build/lldb-test-build.noindex -S nm -u CXXFLAGS -u
> > CFLAGS --executable /local/mnt/ted/8.4/build/./bin/lldb --dsymutil
> > /local/mnt/ted/8.4/build/./bin/dsymutil --filecheck
> > /local/mnt/ted/8.4/build/./bin/FileCheck -C
> > /local/mnt/ted/8.4/build/./bin/clang --env ARCHIVER=/usr/bin/ar --env
> > OBJCOPY=/usr/bin/objcopy -A v66 -C
> > /prj/dsp/qdsp6/release/internal/HEXAGON/branch-8.4/linux64/latest/Tool
> > s/bin/hexagon-clang --executable /local/scratch/ted/8.4/build/bin/lldb
> > -t -v -f RecursiveTypesTestCase.test_recursive_type_1_dwarf --env
> > LLVM_LIBS_DIR=/local/mnt/ted/8.4/build/./lib
> > /local/mnt/ted/8.4/llvm/lldb/packages/Python/lldbsuite/test/functional
> > ities/breakpoint/debugbreak -p TestDebugBreak.py
> >
> >
> > It's got both --arch= and -A, -C is set to my build directory clang as well 
> > as the
> clang I told it to use, --executable is set twice, and it's got -f
> RecursiveTypesTestCase.test_recursive_type_1_dwarf and -p
> TestDebugBreak.py .
> 
> Both lit and lldb-dotest are configured using the dotest arguments that we can
> configure at CMake configuration time. That would explain where the extra
> options come from. If those are not the ones you want, you can still invoke
> dotest.py directly.
> 
> >
> > These tests that do a "process launch" (which is most of them) invoke the
> hexagon simulator, but it was never launched. There was also only 1 testcase
> built in /local/mnt/ted/8.4/build/lldb-test-build.noindex -
> types/TestRecursiveTypes.test_recursive_type_1_dwarf .
> 
> Other than the extra arguments I can't think of any reason why this would
> behave differently. Lit is just a simple wrapper that invokes dotest.py with 
> the
> right arguments.
> 
> > This does not have the patch that removes multiprocess support from
> dotest.
> >
> > Ted
> >
> > > -Original Message-
> > > From: Jonas Devlieghere 
> > > Sent: Thursday, August 8, 2019 2:50 PM
> > > To: Ted Woodward 
> > > Cc: LLDB 
> > > Subject: [EXT] Re: How do I use lit to only run the lldb test suite,
> > > now that dotest multiprocessing capabilities have been removed?
> > >
> > > Hey Ted,
> > >
> > > 1. You can run just the dotest-tests by pointing lit at the `lit/Suite`
> 

Re: [lldb-dev] How do I use lit to only run the lldb test suite, now that dotest multiprocessing capabilities have been removed?

2019-08-09 Thread Jonas Devlieghere via lldb-dev
Hey Ted,

On Thu, Aug 8, 2019 at 2:08 PM Ted Woodward  wrote:
>
> Thanks Jonas.
>
> Is full support for --param fairly recent? I tried it with a version of our 
> master, based on top-of-tree from about a month ago, and it didn't work quite 
> right. It's passing the dotest args, but it's also generating some args, so 
> I'm seeing odd effects.

It's not something I touched recently, but it's always possible they
made some changes in LLVM.

> Here is my run line:
> bin/python bin/llvm-lit /local/mnt/ted/8.4/llvm/lldb/lit/Suite --param 
> 'dotest-args=-A v66 -C 
> /prj/dsp/qdsp6/release/internal/HEXAGON/branch-8.4/linux64/latest/Tools/bin/hexagon-clang
>  --executable /local/scratch/ted/8.4/build/bin/lldb -t -v -f 
> RecursiveTypesTestCase.test_recursive_type_1_dwarf'
>
> I only want to run RecursiveTyepsTestCase.test_recursive_type_1_dwarf, but 
> it's running the whole test suite.

Do you know about the lldb-dotest binary? You can still use it to
invoke a single test, similar to how lit does it. You should be able
to just pass your arguments to that.

Here's a dotest line from the run:
>
> /local/mnt/ted/8.4/build/bin/python 
> /local/mnt/ted/8.4/llvm/lldb/test/dotest.py -q --arch=v66 -s 
> /local/mnt/ted/8.4/build/lldb-test-traces --build-dir 
> /local/mnt/ted/8.4/build/lldb-test-build.noindex -S nm -u CXXFLAGS -u CFLAGS 
> --executable /local/mnt/ted/8.4/build/./bin/lldb --dsymutil 
> /local/mnt/ted/8.4/build/./bin/dsymutil --filecheck 
> /local/mnt/ted/8.4/build/./bin/FileCheck -C 
> /local/mnt/ted/8.4/build/./bin/clang --env ARCHIVER=/usr/bin/ar --env 
> OBJCOPY=/usr/bin/objcopy -A v66 -C 
> /prj/dsp/qdsp6/release/internal/HEXAGON/branch-8.4/linux64/latest/Tools/bin/hexagon-clang
>  --executable /local/scratch/ted/8.4/build/bin/lldb -t -v -f 
> RecursiveTypesTestCase.test_recursive_type_1_dwarf --env 
> LLVM_LIBS_DIR=/local/mnt/ted/8.4/build/./lib 
> /local/mnt/ted/8.4/llvm/lldb/packages/Python/lldbsuite/test/functionalities/breakpoint/debugbreak
>  -p TestDebugBreak.py
>
>
> It's got both --arch= and -A, -C is set to my build directory clang as well 
> as the clang I told it to use, --executable is set twice, and it's got -f 
> RecursiveTypesTestCase.test_recursive_type_1_dwarf and -p TestDebugBreak.py .

Both lit and lldb-dotest are configured using the dotest arguments
that we can configure at CMake configuration time. That would explain
where the extra options come from. If those are not the ones you want,
you can still invoke dotest.py directly.

>
> These tests that do a "process launch" (which is most of them) invoke the 
> hexagon simulator, but it was never launched. There was also only 1 testcase 
> built in /local/mnt/ted/8.4/build/lldb-test-build.noindex - 
> types/TestRecursiveTypes.test_recursive_type_1_dwarf .

Other than the extra arguments I can't think of any reason why this
would behave differently. Lit is just a simple wrapper that invokes
dotest.py with the right arguments.

> This does not have the patch that removes multiprocess support from dotest.
>
> Ted
>
> > -Original Message-
> > From: Jonas Devlieghere 
> > Sent: Thursday, August 8, 2019 2:50 PM
> > To: Ted Woodward 
> > Cc: LLDB 
> > Subject: [EXT] Re: How do I use lit to only run the lldb test suite, now 
> > that
> > dotest multiprocessing capabilities have been removed?
> >
> > Hey Ted,
> >
> > 1. You can run just the dotest-tests by pointing lit at the `lit/Suite` 
> > directory.
> > 2. You can pass arguments to dotest by passing `dotest-args` in --param.
> >
> > The invocation would look something like this:
> >
> > /path/to/llvm/bin/llvm-lit /path/to/lldb/lit/Suite --param 
> > 'dotest-args=--foo --
> > bar'
> >
> > Hope that helps,
> > Jonas
> >
> > On Thu, Aug 8, 2019 at 9:31 AM Ted Woodward 
> > wrote:
> > >
> > > RE: https://reviews.llvm.org/D65311
> > >
> > >
> > >
> > > Internally we use dotest to run the lldb test suite with various RTOS
> > configurations for the test binaries. In these runs we don’t care about the 
> > lit
> > tests or the unit tests, because they are OS agnostic. We do this by 
> > specifying
> > the compiler, lldb, and test flavor (static testcase + os, dynamic library 
> > testcase
> > loaded by an OS image, dynamic library testcase loaded by an OS image
> > running the OS’ debug stub).
> > >
> > >
> > >
> > > With the multiprocess testrunner removed, how do I have lit:
> > >
> > > Only run the lldb test suite
> > > Run dotest with specific arguments
> > >
> > >
> > >
> > > We’re not running cmake; we’re taking an existing tools build and running
> > the tests from the source directory using the toolset.
___
lldb-dev mailing list
lldb-dev@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev