svn commit remote.html Sending remote.html Transmitting file data .done Committing transaction... Committed revision 319213.
Please read through these changes at: http://lldb.llvm.org/remote.html <http://lldb.llvm.org/remote.html> and see if there are any mistakes or need for clarification. Greg > On Nov 28, 2017, at 11:17 AM, Jim Ingham <jing...@apple.com> wrote: > > Thanks! > > Jim > > >> On Nov 28, 2017, at 11:16 AM, Greg Clayton <clayb...@gmail.com> wrote: >> >> I will update the remote.html web page with any info that is missing! I was >> about to go write the web page... Didn't realize we had one. >> >>> On Nov 28, 2017, at 11:08 AM, Jim Ingham <jing...@apple.com> wrote: >>> >>> Hey, Greg, >>> >>> If you have a moment, could you add what isn't already there of this useful >>> info to http://lldb.llvm.org/remote.html? The correct answer to this >>> question should be "read http://lldb.llvm.org/remote.html" but that doesn't >>> seem as immediately useful as your description. >>> >>> Jim >>> >>> >>>> On Nov 28, 2017, at 11:02 AM, Greg Clayton via lldb-dev >>>> <lldb-dev@lists.llvm.org> wrote: >>>> >>>> lldb-server can be launched in two ways: >>>> 1 - platform connection mode >>>> 2 - debug a single process mode >>>> >>>> LLDB has two ways to connect to a remote process: >>>> 1 - you launch the GDB server yourself and attach to it >>>> 2 - you launch lldb-server in platform mode, connect to the platform, and >>>> then just debug like you normally would on a local machine. >>>> >>>> When you launch the GDB server yourself as mentioned in step 1 above, you >>>> can do: >>>> >>>> remote.foo.com% lldb-server gdbserver 1234 -- /bin/ls -lAF >>>> >>>> Then attach to it yourself: >>>> >>>> local.foo.com% lldb >>>> (lldb) process connect connect://remote.foo.com:1234 >>>> >>>> >>>> When you want an lldb-server to do the work of startup on the GDB server >>>> for you: >>>> >>>> remote.foo.com% lldb-server platform --server --listen 1234 >>>> >>>> Then you select the remote platform and connect to it with LLDB: >>>> >>>> local.foo.com% lldb >>>> (lldb) platform select remote-macosx >>>> Platform: remote-macosx >>>> Connected: no >>>> (lldb) platform connect connect://localhost:1234 >>>> Platform: remote-macosx >>>> Triple: x86_64-apple-macosx >>>> OS Version: 10.12.6 (16G1036) >>>> Kernel: Darwin Kernel Version 16.7.0: Wed Oct 4 00:17:00 PDT 2017; >>>> root:xnu-3789.71.6~1/RELEASE_X86_64 >>>> Hostname: gclayton-pro >>>> Connected: yes >>>> WorkingDir: /Users/gclayton >>>> >>>> Now LLDB has a "platform" connection to the remote machine that can start >>>> up the GDB server for you. Also note that the platform states what its >>>> working directory is (which defaults to the directory it was launched in). >>>> >>>> If you want to launch a locally built executable on the remote side, now >>>> you can do: >>>> >>>> (lldb) file a.out >>>> (lldb) run >>>> >>>> This will cause LLDB to create a target with the "a.out" executable that >>>> you cross built. Then you "run" and this will cause LLDB to upload "a.out" >>>> to the platform's current working directory only if the file has changed. >>>> The platform connection allows us to transfer files, but also allows us to >>>> get the MD5 checksum of the file on the other end in the current working >>>> directory and only upload the file if it has changed. If you don't want >>>> the "a.out" executable to be uploaded to the current platform working >>>> directory you can do to specify where the executable will be uploaded to: >>>> >>>> (lldb) file /local/path/to/a.out >>>> # Get the lldb.SBModule for "/local/path/to/a.out" in the local variable >>>> named "m": >>>> (lldb) script m = lldb.target.module['a.out'] >>>> # Set the platform path for the executable to "/bin/a.out": >>>> (lldb) script m.SetPlatformFileSpec("/bin/a.out") >>>> (lldb) run >>>> >>>> Now when you run your program, the program will be uploaded to >>>> "/bin/a.out" instead of the the current working directory of the platform. >>>> >>>> You can also change the platform working directory if you are connected to >>>> the platform >>>> >>>> (lldb) platform settings -w /tmp >>>> >>>> And you can verify it worked using "platform status": >>>> >>>> (lldb) platform status >>>> Platform: remote-macosx >>>> Triple: x86_64-apple-macosx >>>> OS Version: 10.12.6 (16G1036) >>>> Kernel: Darwin Kernel Version 16.7.0: Wed Oct 4 00:17:00 PDT 2017; >>>> root:xnu-3789.71.6~1/RELEASE_X86_64 >>>> Hostname: gclayton-pro >>>> Connected: yes >>>> WorkingDir: /private/tmp >>>> >>>> >>>> If you want to attach to a remote process, you can list the processes if >>>> you are connected: >>>> >>>> (lldb) platform process list >>>> 223 matching processes were found on "remote-macosx" >>>> PID PARENT USER TRIPLE NAME >>>> ====== ====== ========== ======================== >>>> ============================ >>>> 68881 96266 (null) x86_64-apple-macosx lldb-server >>>> 68639 90652 x86_64-apple-macosx lldb >>>> 67830 1 x86_64-apple-macosx helpd >>>> 67737 1 x86_64-apple-macosx com.apple.iCloudHelper >>>> >>>> ... >>>> >>>> Then attach: >>>> >>>> (lldb) attach 68639 >>>> >>>> Let me know if you have any questions. >>>> >>>> Greg Clayton >>>> >>>> >>>>> On Nov 28, 2017, at 9:29 AM, Adrian Prantl via lldb-dev >>>>> <lldb-dev@lists.llvm.org> wrote: >>>>> >>>>> I would recommend asking this on the lldb mailing list instead. >>>>> >>>>> -- adrian >>>>> >>>>>> On Nov 26, 2017, at 8:30 AM, Lior Halphon via llvm-dev >>>>>> <llvm-...@lists.llvm.org> wrote: >>>>>> >>>>>> I'm trying to remotely launch and debug a new process with lldb without >>>>>> much success. >>>>>> >>>>>> Attaching to an already launched process works well by running these >>>>>> commands: >>>>>> >>>>>> process connect <url> >>>>>> process attach -P gdb-remote --pid <pid> >>>>>> >>>>>> But if I want debugserver to launch the executable by itself I'm running >>>>>> into troubles. Especially, I have no clue what arguments should I pass >>>>>> to >>>>>> target >>>>>> create >>>>>> . >>>>>> >>>>>> According to this page LLDB "will transparently take care of [..] >>>>>> downloading the executable in order to be able to debug", yet >>>>>> target >>>>>> create >>>>>> seem to always require a local file. If I specify the remote file via -r >>>>>> I get either >>>>>> unable >>>>>> to open target file >>>>>> or >>>>>> remote >>>>>> --> local transfer without local path is not implemented yet >>>>>> errors. If I set the target to a local file (such as a local copy of the >>>>>> remote's loader executable) without using -r, then attempt to run >>>>>> process >>>>>> launch -p gdb-remote -s <remote path> >>>>>> LLDB will attempt running the local path on the remote machine and fail. >>>>>> >>>>>> What are the correct commands I need to use in order to launch a remote >>>>>> process? >>>>>> >>>>>> _______________________________________________ >>>>>> LLVM Developers mailing list >>>>>> llvm-...@lists.llvm.org >>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev >>>>> >>>>> _______________________________________________ >>>>> lldb-dev mailing list >>>>> lldb-dev@lists.llvm.org >>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev >>>> >>>> _______________________________________________ >>>> lldb-dev mailing list >>>> lldb-dev@lists.llvm.org >>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev >>> >> >
_______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev