Remote Debugging by attaching to a process

I’m trying to remote debug a process. So the process is built in a docker image and ran. If I exec into that container and run lldb-server and then attach to it everything works fine:

(lldb) platform process list
6 matching processes were found on "host"
PID    PARENT USER       TRIPLE                         NAME
====== ====== ========== ============================== ============================
17     16     root       aarch64-*-linux-gnu            rubrika
(lldb) attach --pid 17
Executable module set to "/app/src/target/debug/rubrika".
Architecture set to: aarch64-unknown-linux-gnu.

(lldb) image list
[  0] C63FB3F4-24F3-5B6A-00E0-35F962AA580F-CAB48C7A 0x0000aaaacae70000 /app/src/target/debug/rubrika 

But if I remote connect from my host it doesn’t have the proper targets:

(lldb) platform select remote-linux
(lldb) platform connect connect://localhost:31166
  Platform: remote-linux
    Triple: aarch64-unknown-linux-gnu
(lldb) platform process list
6 matching processes were found on "remote-linux"

PID    PARENT USER       TRIPLE                         NAME
====== ====== ========== ============================== ============================
17     16     root       aarch64-unknown-linux-gnu      rubrika

(lldb) attach --pid 17 
Process 17 stopped
Architecture set to: aarch64-unknown-linux-gnu.

(lldb) image list
error: the target has no associated executable images

So the big difference I see is it didn’t output Executable module set to "/app/src/target/debug/rubrika". . but if I try to create the target:

(lldb) target create /app/src/target/debug/rubrika
error: '/app/src/target/debug/rubrika' doesn't contain any 'remote-linux' platform architectures: aarch64, arm

It “looks” right otherwise, the attach connected to the right pid:

(lldb) attach --pid 17 
Process 17 stopped
* thread #1, name = 'rubrika', stop reason = signal SIGSTOP
    frame #0: 0x0000ffffa14400a0
->  0xffffa14400a0: svc    #0
    0xffffa14400a4: cmn    x0, #0xfff
    0xffffa14400a8: b.hs   0xffffa14400b0
    0xffffa14400ac: ret    
  thread #2, name = 'tokio-runtime-w', stop reason = signal SIGSTOP
    frame #0: 0x0000ffffa144416c
->  0xffffa144416c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffffa1444170: b.hi   0xffffa14441ac
    0xffffa1444174: mov    w19, w0
    0xffffa1444178: mov    w0, w6
  thread #3, name = 'actix-server wo', stop reason = signal SIGSTOP
    frame #0: 0x0000ffffa144416c
->  0xffffa144416c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffffa1444170: b.hi   0xffffa14441ac
    0xffffa1444174: mov    w19, w0
    0xffffa1444178: mov    w0, w6
  thread #4, name = 'actix-server ac', stop reason = signal SIGSTOP
    frame #0: 0x0000ffffa144416c
->  0xffffa144416c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffffa1444170: b.hi   0xffffa14441ac
    0xffffa1444174: mov    w19, w0
    0xffffa1444178: mov    w0, w6

But I think I need to map some source between the remote and the local or something to get the breakpoints to function

I’ve tried doing a source-map:

(lldb) settings set target.source-map /app/src/ /Users/johnanderson/code/drape/rubrika
(lldb) image list
error: the target has no associated executable images

(lldb) breakpoint list
No breakpoints currently set.

(lldb) b --file src/vcs/github/pull_request.rs --line 19
Breakpoint 1: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations.

(lldb) c
Process 17 resuming

(lldb) b list
Breakpoint 2: no locations (pending).
WARNING:  Unable to resolve breakpoint to any actual locations.

If I run target list it has <none> on there and I think its a problem:

(lldb) target list
Current targets:
  target #0: <none> ( arch=aarch64-unknown-linux-gnu, platform=remote-linux, state=connected )
* target #1: <none> ( arch=aarch64-unknown-linux-gnu, platform=remote-linux, pid=17, state=running )

(lldb) target modules list
error: the target has no associated executable images

because in the local version it looks like this:

Current targets:
* target #0: /app/src/target/debug/rubrika ( arch=aarch64-unknown-linux-gnu, platform=host, pid=17, state=stopped )

Let’s get some more info about your setup:

What kind of machine/OS are you running on?

You said in the working case you were running lldb-server in the container. Were you also running lldb in the container?

In the failing case, where are you running lldb-server and where are you running lldb?

Are you certain that /app/src/target/debug/rubrika is the same inside and outside the container?

Outside the container, what does “file /app/src/target/debug/rubrika” return? What about inside the container?

Outside the container, what does “lldb /app/src/target/debug/rubrika” print out? What about inside the container?

Source map doesn’t affect breakpoints; it just tells lldb where to find sources. Breakpoint info comes from the symbol table and debug info.

Loading the target binary in lldb (with the file command you did) shouldn’t return “error: ‘/app/src/target/debug/rubrika’ doesn’t contain any ‘remote-linux’ platform architectures: aarch64, arm”, unless it’s not an ARM Linux binary.

Can confirm that from my attempt to reproduce this.

(lldb) image list
[  0] F8A301A2 0x0000000000400000 /home/davspi01/.lldb/module_cache/remote-linux/.cache/F8A301A2/tbi_lisp
[  1] C46812C4-975A-DDB8-85CD-C81F50B7D0EC-D111C074 0x0000ffffa103a000 [vdso] (0x0000ffffa103a000)

After the attach I had a few modules loaded from the remote, but only assembly display:

(lldb) b main.cpp:10
Breakpoint 1: where = tbi_lisp`main + 12 at main.cpp:46:3, address = 0x000000000040118c
(lldb) process status
Process 1869 stopped
* thread #1, name = 'tbi_lisp', stop reason = signal SIGSTOP
    frame #0: 0x000000000040118c
tbi_lisp`main:
->  0x40118c <+12>: b      0x40118c       ; <+12> at main.cpp:46:3

To get the sources to show up:

(lldb) target modules add ../tbi_lisp/tbi_lisp
(lldb) process status
Process 1869 stopped
* thread #1, name = 'tbi_lisp', stop reason = signal SIGSTOP
    frame #0: 0x000000000040118c tbi_lisp`main(argc=1, argv=0x0000fffff22b7d48) at main.cpp:46:3
   43     */

(not 100% that that’s the official way to do that)

In case it’s needed later, I found the following useful for tracing the actions of the lldb-server platform and sub-processes:

$ strace -ff -o proc -p $(pidof lldb-server)

This will follow forks and create a log file for each process, that you can inspect afterwards.

Maybe it is failing to find or copy the remote files and that may show up there.

We should handle this already, but if it’s a symlink in the container, try making it a copy temporarily to see if that helps.

What kind of machine/OS are you running on?

The host machine is MacOS 13.6 and the docker container is Linux

You said in the working case you were running lldb-server in the container. Were you also running lldb in the container?

Yeah, so the working case I do:

lldb-server platform --listen "*:31166" --server --gdbserver-port 31200

in the container, and then connect to it from the same container:

(lldb) platform select remote-linux
  Platform: remote-linux
 Connected: no
(lldb) platform connect connect://localhost:31166
  Platform: remote-linux
    Triple: aarch64-unknown-linux-gnu
OS Version: 6.4.16 (6.4.16-orbstack-00105-g14094bfeec09)
  Hostname: rubrika-579d7d8799-kq865
 Connected: yes
WorkingDir: /app/src
    Kernel: #1 SMP Mon Sep 18 21:45:38 UTC 2023
(lldb) platform process attach --pid 17
Process 17 stopped
* thread #1, name = 'rubrika', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff9c04f0a0 libc.so.6`syscall + 32
libc.so.6`syscall:

In the failing case, where are you running lldb-server and where are you running lldb?

I’m running lldb-server in the linux container and then running lldb locally on my MacOS host.

Are you certain that /app/src/target/debug/rubrika is the same inside and outside the container?

They are not the same but it was my understanding that llvm knows how to copy the file around where it needs to be? Currently l /app/src/target/debug/rubrika is built inside the container.

In the container:

root@rubrika-579d7d8799-kq865:/app/src# file /app/src/target/debug/rubrika
/app/src/target/debug/rubrika: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID[sha1]=c63fb3f424f35b6a00e035f962aa580fcab48c7a, for GNU/Linux 3.7.0, with debug_info, not stripped

On the host:

❯ file target/debug/rubrika
target/debug/rubrika: Mach-O 64-bit executable arm64

Outside the container, what does “lldb /app/src/target/debug/rubrika” print out What about inside the container?

This just loads lldb and creates the target in Platform: host mode:

In the container:

root@rubrika-579d7d8799-kq865:/app/src# lldb /app/src/target/debug/rubrika
(lldb) target create "/app/src/target/debug/rubrika"
Current executable set to '/app/src/target/debug/rubrika' (aarch64).
(lldb) platform status
  Platform: host
    Triple: aarch64-*-linux-gnu
OS Version: 6.4.16
  Hostname: 127.0.0.1
WorkingDir: /app/src
    Kernel: Linux
   Release: 6.4.16-orbstack-00105-g14094bfeec09
   Version: #1 SMP Mon Sep 18 21:45:38 UTC 2023

On the host:

❯ lldb target/debug/rubrika 
(lldb) target create "target/debug/rubrika"
Current executable set to '/Users/johnanderson/code/drape/rubrika/target/debug/rubrika' (arm64).
(lldb) platform status
  Platform: host
    Triple: arm64-apple-macosx
OS Version: 13.6 (22G120)
  Hostname: 127.0.0.1
WorkingDir: /Users/johnanderson/code/drape/rubrika
    Kernel: Darwin Kernel Version 22.6.0: Fri Sep 15 13:41:28 PDT 2023; root:xnu-8796.141.3.700.8~1/RELEASE_ARM64_T6020

Loading the target binary in lldb (with the file command you did) shouldn’t return “error: ‘/app/src/target/debug/rubrika’ doesn’t contain any ‘remote-linux’ platform architectures: aarch64, arm”, unless it’s not an ARM Linux binary.

Yeah, I think the problem is its a MacOS arm binary since its trying to copy it from my local host to the linux container. Which is why I’m trying to use attach --pid instead, so that I can connect to the Linux binary in the container and debug that.

Certainly along the the right lines. When I tried this (in my last reply) I could see that it had copied the binary from the remote, which I think should happen here but does not.

So maybe we can assume something went wrong with the copy, lldb didn’t handle it well, or silently tried to do its best and carry on.

You could try doing a platform get-file as that may use the same mechanism. Just to copy the binary, no need to attach. Would give a simpler reproducer if it also fails.

Logging may help find the failure reason, log enable lldb platform has some output but may not be enough. log enable gdb-remote packets has a whole lot, and you’ll have to find the relevant bits.

From my working setup, the copy of the binary from the remote is done by:

intern-state     <  79> send packet: $vFile:open:2f686f6d652f64617673706930312f7462695f6c697370,00000000,00000180#4f
(aka /home/davspi01/tbi_lisp)
intern-state     <   6> read packet: $F4#7a
intern-state     <  25> send packet: $vFile:pread:4,80000,0#2a
intern-state     <527903> read packet: $4638303030303b7f454c460201010300000000000000000200b700010000001c1

So I would save that log to a file and look for any vFile and their responses. They will look like read packet: $E<N> if they fail.

The other thing I thought of is, is your module cache folder writeable? On the local machine it’ll be ~/.lldb/module_cache/.... I presume it would be though.

log enable gdb-remote packets -f logfile to send it to a file instead of stdout.

I wonder if filesystem differences is causing it to fail. Because on the mac my location is:

/Users/johnanderson/code/drape/rubrika/target/debug/rubrika

and the container doesn’t have that same layout, its location is:

/app/src/target/debug/rubrika

Cache is writeable:

❯ ls -ald ~/.lldb/module_cache/
Permissions Size User         Date Modified Name
drwx------     - johnanderson 18 Sep 21:05  /Users/johnanderson/.lldb/module_cache

Here is the result:

❯ lldb
(lldb) log enable gdb-remote packets
(lldb) log enable gdb-remote packets
(lldb) platform select remote-linux
  Platform: remote-linux
 Connected: no
(lldb) platform connect connect://localhost:31166
 <   1> send packet: +
 history[1] tid=0x0103 <   1> send packet: +
 <  19> send packet: $QStartNoAckMode#b0
 <   1> read packet: +
 <   6> read packet: $OK#9a
 <   1> send packet: +
 <  13> send packet: $qHostInfo#9b
 < 347> read packet: $triple:616172636836342d2d6c696e75782d676e75;ptrsize:8;watchpoint_exceptions_received:before;endian:little;os_version:6.4.16;os_build:362e342e31362d6f7262737461636b2d30303130352d67313430393462666565633039;os_kernel:233120534d50204d6f6e205365702031382032313a34353a3338205554432032303233;hostname:72756272696b612d353739643764383739392d6b71383635;#24
 <  18> send packet: $qGetWorkingDir#91
 <  20> read packet: $2f6170702f737263#a1
 <  19> send packet: $qQueryGDBServer#cb
 <   7> read packet: $E04#a9
  Platform: remote-linux
    Triple: aarch64-unknown-linux-gnu
OS Version: 6.4.16 (6.4.16-orbstack-00105-g14094bfeec09)
  Hostname: rubrika-579d7d8799-kq865
 Connected: yes
WorkingDir: /app/src
    Kernel: #1 SMP Mon Sep 18 21:45:38 UTC 2023
(lldb) settings set -- target.source-map /app/src /Users/johnanderson/code/drape/rubrika
(lldb) platform process list
 <  17> send packet: $qfProcessInfo#42
 < 286> read packet: $pid:1;ppid:0;uid:0;gid:0;euid:0;egid:0;name:2f7573722f6c6f63616c2f636172676f2f62696e2f636172676f2d7761746368;args:2f7573722f6c6f63616c2f636172676f2f62696e2f636172676f2d7761746368-7761746368-2d78-72756e202d2d20736572766572202d702038383030;triple:616172636836342d2d6c696e75782d676e75;#1d
 <  17> send packet: $qsProcessInfo#4f
 < 270> read packet: $pid:16;ppid:1;uid:0;gid:0;euid:0;egid:0;name:2f62696e2f64617368;args:7368-2d63-636172676f2072756e202d2d20736572766572202d7020383830303b206563686f20225b46696e69736865642072756e6e696e672e2045786974207374617475733a20243f5d22;triple:616172636836342d2d6c696e75782d676e75;#03
 <  17> send packet: $qsProcessInfo#4f
 < 226> read packet: $pid:17;ppid:16;uid:0;gid:0;euid:0;egid:0;name:2f6170702f7372632f7461726765742f64656275672f72756272696b61;args:7461726765742f64656275672f72756272696b61-736572766572-2d70-38383030;triple:616172636836342d2d6c696e75782d676e75;#44
 <  17> send packet: $qsProcessInfo#4f
 < 137> read packet: $pid:866;ppid:0;uid:0;gid:0;euid:0;egid:0;name:2f62696e2f62617368;args:2f62696e2f62617368;triple:616172636836342d2d6c696e75782d676e75;#53
 <  17> send packet: $qsProcessInfo#4f
 < 300> read packet: $pid:1008;ppid:866;uid:0;gid:0;euid:0;egid:0;name:2f7573722f6c69622f6c6c766d2d31312f62696e2f6c6c64622d736572766572;args:6c6c64622d736572766572-706c6174666f726d-2d2d6c697374656e-2a3a3331313636-2d2d736572766572-2d2d6764627365727665722d706f7274-3331323030;triple:616172636836342d2d6c696e75782d676e75;#54
 <  17> send packet: $qsProcessInfo#4f
 < 138> read packet: $pid:1009;ppid:0;uid:0;gid:0;euid:0;egid:0;name:2f62696e2f62617368;args:2f62696e2f62617368;triple:616172636836342d2d6c696e75782d676e75;#79
 <  17> send packet: $qsProcessInfo#4f
 <   7> read packet: $E04#a9
 <  15> send packet: $qUserName:0#fb
 <  12> read packet: $726f6f74#0c
6 matching processes were found on "remote-linux"

PID    PARENT USER       TRIPLE                         NAME
====== ====== ========== ============================== ============================
1      0      root       aarch64-unknown-linux-gnu      cargo-watch
16     1      root       aarch64-unknown-linux-gnu      dash
17     16     root       aarch64-unknown-linux-gnu      rubrika
866    0      root       aarch64-unknown-linux-gnu      bash
1008   866    root       aarch64-unknown-linux-gnu      lldb-server
1009   0      root       aarch64-unknown-linux-gnu      bash
(lldb) platform process attach --pid 17
 <  35> send packet: $qLaunchGDBServer;host:DTO-A152;#6b
 <  24> read packet: $pid:1017;port:31200;#ab
 <   1> send packet: +
 history[1] tid=0x0103 <   1> send packet: +
 <  19> send packet: $QStartNoAckMode#b0
 <   1> read packet: +
 <   6> read packet: $OK#9a
 <   1> send packet: +
 <  86> send packet: $qSupported:xmlRegisters=i386,arm,mips,arc;multiprocess+;fork-events+;vfork-events+#2e
 < 172> read packet: $PacketSize=20000;QStartNoAckMode+;QThreadSuffixSupported+;QListThreadsInStopReply+;qEcho+;qXfer:features:read+;QPassSignals+;qXfer:auxv:read+;qXfer:libraries-svr4:read+#8e
 <  26> send packet: $QThreadSuffixSupported#e4
 <   6> read packet: $OK#9a
 <  27> send packet: $QListThreadsInStopReply#21
 <   6> read packet: $OK#9a
 <  13> send packet: $qHostInfo#9b
 < 347> read packet: $triple:616172636836342d2d6c696e75782d676e75;ptrsize:8;watchpoint_exceptions_received:before;endian:little;os_version:6.4.16;os_build:362e342e31362d6f7262737461636b2d30303130352d67313430393462666565633039;os_kernel:233120534d50204d6f6e205365702031382032313a34353a3338205554432032303233;hostname:72756272696b612d353739643764383739392d6b71383635;#24
 <  10> send packet: $vCont?#49
 <  17> read packet: $vCont;c;C;s;S#62
 <  27> send packet: $qVAttachOrWaitSupported#38
 <   4> read packet: $#00
 <  23> send packet: $QEnableErrorStrings#8c
 <   6> read packet: $OK#9a
 <  16> send packet: $qProcessInfo#dc
 <   7> read packet: $E44#ad
 <   6> send packet: $qC#b4
 <   7> read packet: $E44#ad
 <  16> send packet: $qfThreadInfo#bb
 <   6> read packet: $OK#9a
 <  16> send packet: $qProcessInfo#dc
 <   7> read packet: $E44#ad
 <  23> send packet: $QSetDetachOnError:1#f8
 <   6> read packet: $OK#9a
(lldb)  <  14> send packet: $vAttach;11#68
 <1340> read packet: $T13thread:11;name:rubrika;threads:11,13,14,15;jstopinfo:5b7b226e616d65223a2272756272696b61222c22726561736f6e223a227369676e616c222c227369676e616c223a31392c22746964223a31377d2c7b226e616d65223a22746f6b696f2d72756e74696d652d77222c22726561736f6e223a227369676e616c222c227369676e616c223a31392c22746964223a31397d2c7b226e616d65223a2261637469782d73657276657220776f222c22726561736f6e223a227369676e616c222c227369676e616c223a31392c22746964223a32307d2c7b226e616d65223a2261637469782d736572766572206163222c22726561736f6e223a227369676e616c222c227369676e616c223a31392c22746964223a32317d5d;thread-pcs:0000ffff9c04f0a0,0000ffff9c05316c,0000ffff9c05316c,0000ffff9c05316c;00:4015239cffff0000;01:8000000000000000;02:0100000000000000;03:0000000000000000;04:b8ec72f7ffff0000;05:b8eb72f7ffff0000;06:f0ec72f7ffff0000;07:f0ec72f7ffff0000;08:6200000000000000;09:4400000000000000;0a:94d600c0aaaa0000;0b:0200000000000000;0c:0000000000000000;0d:f0ec72f7ffff0000;0e:c8eb72f7ffff0000;0f:c0eb72f7ffff0000;10:900d26c0aaaa0000;11:80f0049cffff0000;12:0000000000000000;13:400073f7ffff0000;14:88881fc0aaaa0000;15:0000000000000000;16:0010f3f6ffff0000;17:0100000000000000;18:0000f3f6ffff0000;19:0000000000000000;1a:0000000000000000;1b:0000000000000000;1c:0000000000000000;1d:900073f7ffff0000;1e:8483dcbfaaaa0000;1f:a0e872f7ffff0000;20:a0f0049cffff0000;21:00100060;reason:signal;#ef
 <  16> send packet: $qProcessInfo#dc
 < 160> read packet: $pid:11;parent-pid:10;real-uid:0;real-gid:0;effective-uid:0;effective-gid:0;triple:616172636836342d2d6c696e75782d676e75;ostype:linux;endian:little;ptrsize:8;#cc
 <  42> send packet: $qXfer:features:read:target.xml:0,1ffff#14
 <26772> read packet: $l<?xml version="1.0"?><target version="1.0"><architecture>aarch64</architecture><feature><reg name="x0" bitsize="64" offset="0" regnum="0" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="0" dwarf_regnum="0" generic="arg1" /><reg name="x1" bitsize="64" offset="8" regnum="1" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="1" dwarf_regnum="1" generic="arg2" /><reg name="x2" bitsize="64" offset="16" regnum="2" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="2" dwarf_regnum="2" generic="arg3" /><reg name="x3" bitsize="64" offset="24" regnum="3" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="3" dwarf_regnum="3" generic="arg4" /><reg name="x4" bitsize="64" offset="32" regnum="4" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="4" dwarf_regnum="4" generic="arg5" /><reg name="x5" bitsize="64" offset="40" regnum="5" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="5" dwarf_regnum="5" generic="arg6" /><reg name="x6" bitsize="64" offset="48" regnum="6" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="6" dwarf_regnum="6" generic="arg7" /><reg name="x7" bitsize="64" offset="56" regnum="7" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="7" dwarf_regnum="7" generic="arg8" /><reg name="x8" bitsize="64" offset="64" regnum="8" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="8" dwarf_regnum="8" /><reg name="x9" bitsize="64" offset="72" regnum="9" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="9" dwarf_regnum="9" /><reg name="x10" bitsize="64" offset="80" regnum="10" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="10" dwarf_regnum="10" /><reg name="x11" bitsize="64" offset="88" regnum="11" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="11" dwarf_regnum="11" /><reg name="x12" bitsize="64" offset="96" regnum="12" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="12" dwarf_regnum="12" /><reg name="x13" bitsize="64" offset="104" regnum="13" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="13" dwarf_regnum="13" /><reg name="x14" bitsize="64" offset="112" regnum="14" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="14" dwarf_regnum="14" /><reg name="x15" bitsize="64" offset="120" regnum="15" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="15" dwarf_regnum="15" /><reg name="x16" bitsize="64" offset="128" regnum="16" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="16" dwarf_regnum="16" /><reg name="x17" bitsize="64" offset="136" regnum="17" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="17" dwarf_regnum="17" /><reg name="x18" bitsize="64" offset="144" regnum="18" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="18" dwarf_regnum="18" /><reg name="x19" bitsize="64" offset="152" regnum="19" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="19" dwarf_regnum="19" /><reg name="x20" bitsize="64" offset="160" regnum="20" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="20" dwarf_regnum="20" /><reg name="x21" bitsize="64" offset="168" regnum="21" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="21" dwarf_regnum="21" /><reg name="x22" bitsize="64" offset="176" regnum="22" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="22" dwarf_regnum="22" /><reg name="x23" bitsize="64" offset="184" regnum="23" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="23" dwarf_regnum="23" /><reg name="x24" bitsize="64" offset="192" regnum="24" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="24" dwarf_regnum="24" /><reg name="x25" bitsize="64" offset="200" regnum="25" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="25" dwarf_regnum="25" /><reg name="x26" bitsize="64" offset="208" regnum="26" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="26" dwarf_regnum="26" /><reg name="x27" bitsize="64" offset="216" regnum="27" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="27" dwarf_regnum="27" /><reg name="x28" bitsize="64" offset="224" regnum="28" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="28" dwarf_regnum="28" /><reg name="fp" bitsize="64" offset="232" regnum="29" altname="x29" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="29" dwarf_regnum="29" generic="fp" /><reg name="lr" bitsize="64" offset="240" regnum="30" altname="x30" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="30" dwarf_regnum="30" generic="ra" /><reg name="sp" bitsize="64" offset="248" regnum="31" altname="x31" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="31" dwarf_regnum="31" generic="sp" /><reg name="pc" bitsize="64" offset="256" regnum="32" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="32" dwarf_regnum="32" generic="pc" /><reg name="cpsr" bitsize="32" offset="264" regnum="33" encoding="uint" format="hex" group="General Purpose Registers" ehframe_regnum="33" dwarf_regnum="33" generic="flags" /><reg name="w0" bitsize="32" offset="0" regnum="34" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="0" /><reg name="w1" bitsize="32" offset="8" regnum="35" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="1" invalidate_regnums="1" /><reg name="w2" bitsize="32" offset="16" regnum="36" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="2" invalidate_regnums="2" /><reg name="w3" bitsize="32" offset="24" regnum="37" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="3" invalidate_regnums="3" /><reg name="w4" bitsize="32" offset="32" regnum="38" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="4" invalidate_regnums="4" /><reg name="w5" bitsize="32" offset="40" regnum="39" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="5" invalidate_regnums="5" /><reg name="w6" bitsize="32" offset="48" regnum="40" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="6" invalidate_regnums="6" /><reg name="w7" bitsize="32" offset="56" regnum="41" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="7" invalidate_regnums="7" /><reg name="w8" bitsize="32" offset="64" regnum="42" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="8" invalidate_regnums="8" /><reg name="w9" bitsize="32" offset="72" regnum="43" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="9" invalidate_regnums="9" /><reg name="w10" bitsize="32" offset="80" regnum="44" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="10" invalidate_regnums="10" /><reg name="w11" bitsize="32" offset="88" regnum="45" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="11" invalidate_regnums="11" /><reg name="w12" bitsize="32" offset="96" regnum="46" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="12" invalidate_regnums="12" /><reg name="w13" bitsize="32" offset="104" regnum="47" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="13" invalidate_regnums="13" /><reg name="w14" bitsize="32" offset="112" regnum="48" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="14" invalidate_regnums="14" /><reg name="w15" bitsize="32" offset="120" regnum="49" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="15" invalidate_regnums="15" /><reg name="w16" bitsize="32" offset="128" regnum="50" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="16" invalidate_regnums="16" /><reg name="w17" bitsize="32" offset="136" regnum="51" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="17" invalidate_regnums="17" /><reg name="w18" bitsize="32" offset="144" regnum="52" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="18" invalidate_regnums="18" /><reg name="w19" bitsize="32" offset="152" regnum="53" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="19" invalidate_regnums="19" /><reg name="w20" bitsize="32" offset="160" regnum="54" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="20" invalidate_regnums="20" /><reg name="w21" bitsize="32" offset="168" regnum="55" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="21" invalidate_regnums="21" /><reg name="w22" bitsize="32" offset="176" regnum="56" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="22" invalidate_regnums="22" /><reg name="w23" bitsize="32" offset="184" regnum="57" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="23" invalidate_regnums="23" /><reg name="w24" bitsize="32" offset="192" regnum="58" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="24" invalidate_regnums="24" /><reg name="w25" bitsize="32" offset="200" regnum="59" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="25" invalidate_regnums="25" /><reg name="w26" bitsize="32" offset="208" regnum="60" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="26" invalidate_regnums="26" /><reg name="w27" bitsize="32" offset="216" regnum="61" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="27" invalidate_regnums="27" /><reg name="w28" bitsize="32" offset="224" regnum="62" encoding="uint" format="hex" group="General Purpose Registers" value_regnums="28" invalidate_regnums="28" /><reg name="v0" bitsize="128" offset="272" regnum="63" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="64" dwarf_regnum="64" /><reg name="v1" bitsize="128" offset="288" regnum="64" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="65" dwarf_regnum="65" /><reg name="v2" bitsize="128" offset="304" regnum="65" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="66" dwarf_regnum="66" /><reg name="v3" bitsize="128" offset="320" regnum="66" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="67" dwarf_regnum="67" /><reg name="v4" bitsize="128" offset="336" regnum="67" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="68" dwarf_regnum="68" /><reg name="v5" bitsize="128" offset="352" regnum="68" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="69" dwarf_regnum="69" /><reg name="v6" bitsize="128" offset="368" regnum="69" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="70" dwarf_regnum="70" /><reg name="v7" bitsize="128" offset="384" regnum="70" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="71" dwarf_regnum="71" /><reg name="v8" bitsize="128" offset="400" regnum="71" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="72" dwarf_regnum="72" /><reg name="v9" bitsize="128" offset="416" regnum="72" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="73" dwarf_regnum="73" /><reg name="v10" bitsize="128" offset="432" regnum="73" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="74" dwarf_regnum="74" /><reg name="v11" bitsize="128" offset="448" regnum="74" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="75" dwarf_regnum="75" /><reg name="v12" bitsize="128" offset="464" regnum="75" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="76" dwarf_regnum="76" /><reg name="v13" bitsize="128" offset="480" regnum="76" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="77" dwarf_regnum="77" /><reg name="v14" bitsize="128" offset="496" regnum="77" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="78" dwarf_regnum="78" /><reg name="v15" bitsize="128" offset="512" regnum="78" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="79" dwarf_regnum="79" /><reg name="v16" bitsize="128" offset="528" regnum="79" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="80" dwarf_regnum="80" /><reg name="v17" bitsize="128" offset="544" regnum="80" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="81" dwarf_regnum="81" /><reg name="v18" bitsize="128" offset="560" regnum="81" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="82" dwarf_regnum="82" /><reg name="v19" bitsize="128" offset="576" regnum="82" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="83" dwarf_regnum="83" /><reg name="v20" bitsize="128" offset="592" regnum="83" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="84" dwarf_regnum="84" /><reg name="v21" bitsize="128" offset="608" regnum="84" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="85" dwarf_regnum="85" /><reg name="v22" bitsize="128" offset="624" regnum="85" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="86" dwarf_regnum="86" /><reg name="v23" bitsize="128" offset="640" regnum="86" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="87" dwarf_regnum="87" /><reg name="v24" bitsize="128" offset="656" regnum="87" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="88" dwarf_regnum="88" /><reg name="v25" bitsize="128" offset="672" regnum="88" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="89" dwarf_regnum="89" /><reg name="v26" bitsize="128" offset="688" regnum="89" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="90" dwarf_regnum="90" /><reg name="v27" bitsize="128" offset="704" regnum="90" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="91" dwarf_regnum="91" /><reg name="v28" bitsize="128" offset="720" regnum="91" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="92" dwarf_regnum="92" /><reg name="v29" bitsize="128" offset="736" regnum="92" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="93" dwarf_regnum="93" /><reg name="v30" bitsize="128" offset="752" regnum="93" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="94" dwarf_regnum="94" /><reg name="v31" bitsize="128" offset="768" regnum="94" encoding="vector" format="vector-uint8" group="Floating Point Registers" ehframe_regnum="95" dwarf_regnum="95" /><reg name="s0" bitsize="32" offset="272" regnum="95" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="63" invalidate_regnums="63,127" /><reg name="s1" bitsize="32" offset="288" regnum="96" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="64" invalidate_regnums="64,128" /><reg name="s2" bitsize="32" offset="304" regnum="97" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="65" invalidate_regnums="65,129" /><reg name="s3" bitsize="32" offset="320" regnum="98" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="66" invalidate_regnums="66,130" /><reg name="s4" bitsize="32" offset="336" regnum="99" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="67" invalidate_regnums="67,131" /><reg name="s5" bitsize="32" offset="352" regnum="100" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="68" invalidate_regnums="68,132" /><reg name="s6" bitsize="32" offset="368" regnum="101" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="69" invalidate_regnums="69,133" /><reg name="s7" bitsize="32" offset="384" regnum="102" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="70" invalidate_regnums="70,134" /><reg name="s8" bitsize="32" offset="400" regnum="103" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="71" invalidate_regnums="71,135" /><reg name="s9" bitsize="32" offset="416" regnum="104" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="72" invalidate_regnums="72,136" /><reg name="s10" bitsize="32" offset="432" regnum="105" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="73" invalidate_regnums="73,137" /><reg name="s11" bitsize="32" offset="448" regnum="106" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="74" invalidate_regnums="74,138" /><reg name="s12" bitsize="32" offset="464" regnum="107" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="75" invalidate_regnums="75,139" /><reg name="s13" bitsize="32" offset="480" regnum="108" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="76" invalidate_regnums="76,140" /><reg name="s14" bitsize="32" offset="496" regnum="109" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="77" invalidate_regnums="77,141" /><reg name="s15" bitsize="32" offset="512" regnum="110" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="78" invalidate_regnums="78,142" /><reg name="s16" bitsize="32" offset="528" regnum="111" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="79" invalidate_regnums="79,143" /><reg name="s17" bitsize="32" offset="544" regnum="112" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="80" invalidate_regnums="80,144" /><reg name="s18" bitsize="32" offset="560" regnum="113" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="81" invalidate_regnums="81,145" /><reg name="s19" bitsize="32" offset="576" regnum="114" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="82" invalidate_regnums="82,146" /><reg name="s20" bitsize="32" offset="592" regnum="115" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="83" invalidate_regnums="83,147" /><reg name="s21" bitsize="32" offset="608" regnum="116" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="84" invalidate_regnums="84,148" /><reg name="s22" bitsize="32" offset="624" regnum="117" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="85" invalidate_regnums="85,149" /><reg name="s23" bitsize="32" offset="640" regnum="118" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="86" invalidate_regnums="86,150" /><reg name="s24" bitsize="32" offset="656" regnum="119" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="87" invalidate_regnums="87,151" /><reg name="s25" bitsize="32" offset="672" regnum="120" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="88" invalidate_regnums="88,152" /><reg name="s26" bitsize="32" offset="688" regnum="121" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="89" invalidate_regnums="89,153" /><reg name="s27" bitsize="32" offset="704" regnum="122" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="90" invalidate_regnums="90,154" /><reg name="s28" bitsize="32" offset="720" regnum="123" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="91" invalidate_regnums="91,155" /><reg name="s29" bitsize="32" offset="736" regnum="124" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="92" invalidate_regnums="92,156" /><reg name="s30" bitsize="32" offset="752" regnum="125" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="93" invalidate_regnums="93,157" /><reg name="s31" bitsize="32" offset="768" regnum="126" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="94" invalidate_regnums="94,158" /><reg name="d0" bitsize="64" offset="272" regnum="127" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="63" invalidate_regnums="63,95" /><reg name="d1" bitsize="64" offset="288" regnum="128" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="64" invalidate_regnums="64,96" /><reg name="d2" bitsize="64" offset="304" regnum="129" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="65" invalidate_regnums="65,97" /><reg name="d3" bitsize="64" offset="320" regnum="130" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="66" invalidate_regnums="66,98" /><reg name="d4" bitsize="64" offset="336" regnum="131" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="67" invalidate_regnums="67,99" /><reg name="d5" bitsize="64" offset="352" regnum="132" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="68" invalidate_regnums="68,100" /><reg name="d6" bitsize="64" offset="368" regnum="133" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="69" invalidate_regnums="69,101" /><reg name="d7" bitsize="64" offset="384" regnum="134" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="70" invalidate_regnums="70,102" /><reg name="d8" bitsize="64" offset="400" regnum="135" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="71" invalidate_regnums="71,103" /><reg name="d9" bitsize="64" offset="416" regnum="136" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="72" invalidate_regnums="72,104" /><reg name="d10" bitsize="64" offset="432" regnum="137" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="73" invalidate_regnums="73,105" /><reg name="d11" bitsize="64" offset="448" regnum="138" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="74" invalidate_regnums="74,106" /><reg name="d12" bitsize="64" offset="464" regnum="139" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="75" invalidate_regnums="75,107" /><reg name="d13" bitsize="64" offset="480" regnum="140" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="76" invalidate_regnums="76,108" /><reg name="d14" bitsize="64" offset="496" regnum="141" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="77" invalidate_regnums="77,109" /><reg name="d15" bitsize="64" offset="512" regnum="142" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="78" invalidate_regnums="78,110" /><reg name="d16" bitsize="64" offset="528" regnum="143" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="79" invalidate_regnums="79,111" /><reg name="d17" bitsize="64" offset="544" regnum="144" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="80" invalidate_regnums="80,112" /><reg name="d18" bitsize="64" offset="560" regnum="145" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="81" invalidate_regnums="81,113" /><reg name="d19" bitsize="64" offset="576" regnum="146" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="82" invalidate_regnums="82,114" /><reg name="d20" bitsize="64" offset="592" regnum="147" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="83" invalidate_regnums="83,115" /><reg name="d21" bitsize="64" offset="608" regnum="148" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="84" invalidate_regnums="84,116" /><reg name="d22" bitsize="64" offset="624" regnum="149" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="85" invalidate_regnums="85,117" /><reg name="d23" bitsize="64" offset="640" regnum="150" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="86" invalidate_regnums="86,118" /><reg name="d24" bitsize="64" offset="656" regnum="151" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="87" invalidate_regnums="87,119" /><reg name="d25" bitsize="64" offset="672" regnum="152" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="88" invalidate_regnums="88,120" /><reg name="d26" bitsize="64" offset="688" regnum="153" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="89" invalidate_regnums="89,121" /><reg name="d27" bitsize="64" offset="704" regnum="154" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="90" invalidate_regnums="90,122" /><reg name="d28" bitsize="64" offset="720" regnum="155" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="91" invalidate_regnums="91,123" /><reg name="d29" bitsize="64" offset="736" regnum="156" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="92" invalidate_regnums="92,124" /><reg name="d30" bitsize="64" offset="752" regnum="157" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="93" invalidate_regnums="93,125" /><reg name="d31" bitsize="64" offset="768" regnum="158" encoding="ieee754" format="float" group="Floating Point Registers" value_regnums="94" invalidate_regnums="94,126" /><reg name="fpsr" bitsize="32" offset="784" regnum="159" encoding="uint" format="hex" group="Floating Point Registers" /><reg name="fpcr" bitsize="32" offset="788" regnum="160" encoding="uint" format="hex" group="Floating Point Registers" /></feature></target>#db
 <  19> send packet: $p0;thread:0011;#8a
 <  20> read packet: $4015239cffff0000#23
 <  26> send packet: $qStructuredDataPlugins#02
 <   4> read packet: $#00
 <  16> send packet: $jSignalsInfo#c7
 <7132> read packet: $[
  {
    "name": "SIGHUP",
    "notify": true,
    "signo": 1,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGINT",
    "notify": true,
    "signo": 2,
    "stop": true,
    "suppress": true
  },
  {
    "name": "SIGQUIT",
    "notify": true,
    "signo": 3,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGILL",
    "notify": true,
    "signo": 4,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGTRAP",
    "notify": true,
    "signo": 5,
    "stop": true,
    "suppress": true
  },
  {
    "name": "SIGABRT",
    "notify": true,
    "signo": 6,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGBUS",
    "notify": true,
    "signo": 7,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGFPE",
    "notify": true,
    "signo": 8,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGKILL",
    "notify": true,
    "signo": 9,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGUSR1",
    "notify": true,
    "signo": 10,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGSEGV",
    "notify": true,
    "signo": 11,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGUSR2",
    "notify": true,
    "signo": 12,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGPIPE",
    "notify": true,
    "signo": 13,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGALRM",
    "notify": false,
    "signo": 14,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGTERM",
    "notify": true,
    "signo": 15,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGSTKFLT",
    "notify": true,
    "signo": 16,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGCHLD",
    "notify": true,
    "signo": 17,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGCONT",
    "notify": true,
    "signo": 18,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGSTOP",
    "notify": true,
    "signo": 19,
    "stop": true,
    "suppress": true
  },
  {
    "name": "SIGTSTP",
    "notify": true,
    "signo": 20,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGTTIN",
    "notify": true,
    "signo": 21,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGTTOU",
    "notify": true,
    "signo": 22,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGURG",
    "notify": true,
    "signo": 23,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGXCPU",
    "notify": true,
    "signo": 24,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGXFSZ",
    "notify": true,
    "signo": 25,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGVTALRM",
    "notify": true,
    "signo": 26,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGPROF",
    "notify": false,
    "signo": 27,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGWINCH",
    "notify": true,
    "signo": 28,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGIO",
    "notify": true,
    "signo": 29,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGPWR",
    "notify": true,
    "signo": 30,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIGSYS",
    "notify": true,
    "signo": 31,
    "stop": true,
    "suppress": false
  },
  {
    "name": "SIG32",
    "notify": false,
    "signo": 32,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIG33",
    "notify": false,
    "signo": 33,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN",
    "notify": false,
    "signo": 34,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+1",
    "notify": false,
    "signo": 35,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+2",
    "notify": false,
    "signo": 36,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+3",
    "notify": false,
    "signo": 37,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+4",
    "notify": false,
    "signo": 38,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+5",
    "notify": false,
    "signo": 39,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+6",
    "notify": false,
    "signo": 40,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+7",
    "notify": false,
    "signo": 41,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+8",
    "notify": false,
    "signo": 42,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+9",
    "notify": false,
    "signo": 43,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+10",
    "notify": false,
    "signo": 44,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+11",
    "notify": false,
    "signo": 45,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+12",
    "notify": false,
    "signo": 46,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+13",
    "notify": false,
    "signo": 47,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+14",
    "notify": false,
    "signo": 48,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMIN+15",
    "notify": false,
    "signo": 49,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-14",
    "notify": false,
    "signo": 50,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-13",
    "notify": false,
    "signo": 51,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-12",
    "notify": false,
    "signo": 52,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-11",
    "notify": false,
    "signo": 53,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-10",
    "notify": false,
    "signo": 54,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-9",
    "notify": false,
    "signo": 55,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-8",
    "notify": false,
    "signo": 56,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-7",
    "notify": false,
    "signo": 57,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-6",
    "notify": false,
    "signo": 58,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-5",
    "notify": false,
    "signo": 59,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-4",
    "notify": false,
    "signo": 60,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-3",
    "notify": false,
    "signo": 61,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-2",
    "notify": false,
    "signo": 62,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX-1",
    "notify": false,
    "signo": 63,
    "stop": false,
    "suppress": false
  },
  {
    "name": "SIGRTMAX",
    "notify": false,
    "signo": 64,
    "stop": false,
    "suppress": false
  }
]#33
 <  28> send packet: $qXfer:auxv:read::0,1ffff#73
 < 374> read packet: $6c21000000000000000090239cffff0000330000000000000070120000000000001000000000000000ffffb33f0000000006000000000000000010000000000000110000000000000064000000000000000300000000000000400061bfaaaa00000400000000000000380000000000000005000000000000000a0000000000000007000000000000000090209cffff0000080000000000000000000000000000000900000000000000d8176abfaaaa00000b0000000000000000000000000000000c0000000000000000000000000000000d0000000000000000000000000000000e000000000000000000000000000000170000000000000000000000000000001900000000000000a80473f7ffff00001a0000000000000081010000000000001f00000000000000e30f73f7ffff00000f00000000000000b80473f7ffff00001b000000000000001c000000000000001c00000000000000200000000000000000000000000000000000000000000000#78
 <  22> send packet: $qProcessInfoPID:17#5b
 < 226> read packet: $pid:17;ppid:16;uid:0;gid:0;euid:0;egid:0;name:2f6170702f7372632f7461726765742f64656275672f72756272696b61;args:7461726765742f64656275672f72756272696b61-736572766572-2d70-38383030;triple:616172636836342d2d6c696e75782d676e75;#44
 < 125> send packet: $qModuleInfo:2f6170702f7372632f7461726765742f64656275672f72756272696b61;616172636836342d756e6b6e6f776e2d6c696e75782d676e75#5a
 < 251> read packet: $uuid:43363346423346343234463335423641303045303335463936324141353830464341423438433741;triple:616172636836342d2d6c696e7578;file_path:2f6170702f7372632f7461726765742f64656275672f72756272696b61;file_offset:0000000000000000;file_size:0000000008668d38;#8d
 <  91> send packet: $vFile:open:2f6170702f7372632f7461726765742f64656275672f72756272696b61,00000000,00000180#8e
 <   6> read packet: $F5#7b
 <  25> send packet: $vFile:pread:5,80000,0#2b

<80209> read packet: $4638303030303b7f454c460201010000000000000000000300b70001000000d8170900000000004000000000000000b88266080000000000000000400038000a0040002a002900060000000400000040000000000000004000000000000000400000000000000030020000000000003002000000000000080000000000000003000000040000007002000000000000700200000000000070020000000000001b000000000000001b00000000000000010000000000000001000000050000000000000000000000000000000000000000000000000000001411bd00000000001411bd000000000000000100000000000100000006000000d814bd0000000000d814be0000000000d814be0000000000282e070000000000e030070000000000000001000000000002000000060000008808c400000000008808c500000000008808c5000000000030020000000000003002000000000000080000000000000004000000040000008c020000000000008c020000000000008c020000000000004400000000000000440000000000000004000000000000000700000004000000d814bd0000000000d814be0000000000d814be00000000007800000000000000a802000000000000080000000000000050e57464040000009c73a100000000009c73a100000000009c73a1000000000064bb04000000000064bb040000000000040000000000000051e574640600000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000052e5746404000000d814bd0000000000d814be0000000000d814be0000000000280b070000000000280b07000000000001000000000000002f6c69622f6c642d6c696e75782d616172636836342e736f2e310000040000001400000003000000474e5500c63fb3f424f35b6a00e035f962aa580fcab48c7a040000001000000001000000474e55000000000003000000070000000000000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000b00e8e408000000000000000000000000000000000003001b000020c5000000000000000000000000000b0400001200000000000000000000000000000000000000110500001200000000000000000000000000000000000000c80200001200000000000000000000000000000000000000590400001200000000000000000000000

.... < trimming that output > ... 


<  29> send packet: $vFile:pread:5,80000,13880#ff
 <80242> read packet: $4638303030303b030400000000000061f19300000000006030be0000000000030400000000000061f19300000000007830be0000000000030400000000000076f29300000000008830be00000000000304000000000000d1f29300000000009830be00000000000304000000000000d4f2930000000000a830be00000000000304000000000000d5f2930000000000c030be0000000000030400000000000070f3930000000000d830be0000000000030400000000000070f3930000000000f030be0000000000030400000000000070f39300000000000831be0000000000030400000000000070f39300000000002031be0000000000030400000000000070f39300000000003831be0000000000030400000000000070f39300000000005031be0000000000030400000000000070f39300000000006831be0000000000030400000000000070f39300000000008031be0000000000030400000000000070f39300000000009831be0000000000030400000000000070f3930000000000b031be0000000000030400000000000070f3930000000000c831be0000000000030400000000000070f3930000000000e031be0000000000030400000000000070f3930000000000f831be0000000000030400000000000070f39300000000001032be0000000000030400000000000070f39300000000002832be0000000000030400000000000070f39300000000004032be00000000000304000000000000aaf49300000000005832be00000000000304000000000000aaf49300000000007032be00000000000304000000000000aaf49300000000008832be00000000000304000000000000aaf4930000000000a032be00000000000304000000000000aaf4930000000000b832be000000000003040000000000000ef5930000000000c832be00000000000304000000000000aaf4930000000000e032be00000000000304000000000000aaf4930000000000f832be0000000000030400000000000030f59300000000000833be00000000000304000000000000aaf49300000000002033be00000000000304000000000000aaf49300000000003833be000000000003040000000000006af59300000000005033be0000000000030400000000000048640e00000000005833be0000000000030400000000000060836f00000000006033be00000000000304000000000000d4660e00000000006833be00000000000304000000000000f0620e00000000007033be00000000000304000000000000f0630e00000000007833be0000000000030400000000000098630e00000000008033be000000000003040000000000002c670e0000000000a033be000000000003040000000000001c640e0000000000a833be0000000000030400000000000060836f0000000000b033be0000000000030400000000000000670e0000000000b833be0000000000030400000000000074620e0000000000c033be00000000000304000000000000c4630e0000000000c833be000000000003040000000000006c630e0000000000d033be0000000000030400000000000058670e0000000000f033be00000000000304000000000000b0c71400000000000834be00000000000304000000000000b0396200000000001034be00000000000304000000000000ccbe1400000000002834be00000000000304000000000000a0be1f00000000003034be0000000000030400000000000010ba1400000000004834be00000000000304000000000000108e2100000000005034be0000000000030400000000000004c91400000000006834be00000000000304000000000000849b6100000000007034be0000000000030400000000000064121500000000008834be0000000000030400000000000060f92000000000009034be0000000000030400000000000040ca140000000000a834be0000000000030400000000000054005e0000000000b034be00000000000304000000000000cdf5930000000000c834be000000000003040000000000003cf6930000000000e034be000000000003040000000000008cf6930000000000f034be000000000003040000000000009ef69300000000000035be00000000000304000000000000b1f69300000000001035be000000000003040000000000003cf69300000000002835be0000000000030400000000000004f79300000000004035be0000000000030400000000000004f79300000000005835be0000000000030400000000000084c81400000000007035be000000000003040000000000009cb46000000000007835be00000000
... < trimming that output > .... 


<  29> send packet: $vFile:pread:5,80000,27100#f5
 <80236> read packet: $4638303030303b000000000304000000000000c13e940000000000085abe000000000003040000000000000440940000000000185abe00000000000304000000000000ec40940000000000305abe00000000000304000000000000ac41940000000000485abe000000000003040000000000002d42940000000000585abe000000000003040000000000003042940000000000685abe00000000000304000000000000ac41940000000000805abe000000000003040000000000005a42940000000000905abe00000000000304000000000000ecbe140000000000a85abe00000000000304000000000000107e6d0000000000b05abe00000000000304000000000000ac41940000000000c85abe000000000003040000000000008caa140000000000e05abe0000000000030400000000000034cd6d0000000000e85abe00000000000304000000000000ac41940000000000005bbe000000000003040000000000001042940000000000105bbe000000000003040000000000007020150000000000285bbe0000000000030400000000000068b91f0000000000305bbe00000000000304000000000000b4ca140000000000485bbe00000000000304000000000000b086210000000000505bbe00000000000304000000000000b4ca140000000000685bbe00000000000304000000000000e82f270000000000705bbe00000000000304000000000000b086210000000000785bbe00000000000304000000000000305bbe0000000000805bbe000000000003040000000000003c2b270000000000885bbe00000000000304000000000000446a0c0000000000905bbe00000000000304000000000000146d0c0000000000985bbe00000000000304000000000000d8c4140000000000b05bbe0000000000030400000000000088e3920000000000b85bbe00000000000304000000000000d8c4140000000000d05bbe0000000000030400000000000088e3920000000000d85bbe0000000000030400000000000088e3920000000000e05bbe00000000000304000000000000985bbe0000000000e85bbe00000000000304000000000000ccad290000000000f05bbe00000000000304000000000000d8ad290000000000f85bbe00000000000304000000000000e85d0c0000000000005cbe000000000003040000000000002846940000000000105cbe000000000003040000000000001047940000000000285cbe000000000003040000000000009347940000000000405cbe000000000003040000000000009347940000000000585cbe000000000003040000000000009347940000000000705cbe00000000000304000000000000f888140000000000885cbe0000000000030400000000000088bc1f0000000000905cbe000000000003040000000000009347940000000000a85cbe000000000003040000000000003e48940000000000b85cbe00000000000304000000000000ecbe140000000000d05cbe00000000000304000000000000107e6d0000000000d85cbe000000000003040000000000004848940000000000e85cbe000000000003040000000000009347940000000000005dbe000000000003040000000000009347940000000000185dbe000000000003040000000000009347940000000000305dbe000000000003040000000000009347940000000000485dbe000000000003040000000000009347940000000000605dbe000000000003040000000000006e48940000000000705dbe000000000003040000000000008caa140000000000885dbe0000000000030400000000000034cd6d0000000000905dbe000000000003040000000000009347940000000000a85dbe000000000003040000000000007e48940000000000b85dbe000000000003040000000000009347940000000000d05dbe000000000003040000000000008a48940000000000e05dbe000000000003040000000000009347940000000000f85dbe000000000003040000000000009948940000000000085ebe000000000003040000000000009347940000000000205ebe00000000000304000000000000ae48940000000000305ebe000000000003040000000000009347940000000000485ebe000000000003040000000000009347940000000000605ebe000000000003040000000000009347940000000000785ebe000000000003040000000000001b49940000000000885ebe000000000003040000000000009347940000000000a05ebe0000000000030400000000000064a9140000000000b85ebe0000000000030400000000000034ce6d0000000000c05ebe000000000003040000000000009347940000000000d85ebe000000000003040000000000009347940000000000f05ebe


... < trimming that output > ... 

<  29> send packet: $vFile:pread:5,80000,afc80#8d
 <   7> read packet: $F0;#b1
 <  17> send packet: $vFile:close:5#b5
 <   6> read packet: $F0#76
 <  34> send packet: $qMemoryRegionInfo:ffff9c04f0a0#d3
 < 126> read packet: $start:ffff9bf81000;size:15c000;permissions:rx;name:2f6c69622f616172636836342d6c696e75782d676e752f6c6962632d322e33312e736f;#f5
 <   8> send packet: $x0,0#04
 <   6> read packet: $OK#9a
 <  21> send packet: $xfffff7730000,200#95
 < 517> read packet: $0000000000000000d8176abfaaaa0000000000000000000010c7f4bfaaaa000008cc0e9cffff00000400000000000000e80173f7ffff00007c7bfb9bffff0000508a82bfaaaa0000508a82bfaaaa00000400000000000000e80173f7ffff000010c7f4bfaaaa00000000000000000000b88b82bfaaaa0000dc1dfa9bffff0000181efa9bffff0000000000000000000000000000000000000c186abfaaaa000000000000000000000000000000000000d8176abfaaaa000000000000000000000000000000000000000000000000000000000000000000006572002d700038380000000080002008e80173f7ffff000000000080040000008c8b82bfaaaa0000000440000000000010c7f4bfaaaa00000000000000000000d8176abfaaaa00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000900073f7ffff0000ed34aef6e021434500c2239cffff0000a129279ae0214345000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000e00173f7ffff000004000000000000001f0a73f7ffff0000340a73f7ffff00003b0a73f7ffff0000#f3
 <  34> send packet: $qMemoryRegionInfo:aaaabf6a180c#f3
 < 114> read packet: $start:aaaabf610000;size:bd2000;permissions:rx;name:2f6170702f7372632f7461726765742f64656275672f72756272696b61;#10
 <  34> send packet: $qMemoryRegionInfo:ffff9c05316c#aa
 < 126> read packet: $start:ffff9bf81000;size:15c000;permissions:rx;name:2f6c69622f616172636836342d6c696e75782d676e752f6c6962632d322e33312e736f;#f5
 <  20> send packet: $p1d;thread:0013;#f1
 <  20> read packet: $a0d8f79bffff0000#bd
 <  21> send packet: $xffff9bf7d800,200#02
 < 516> read packet: $c0bbadf1aaaa0000000000000000000000000000000000000500000000000000c0bbadf1aaaa0000c0bbadf1aaaa00004f8dfe00000000000c000000000000000100000000000000010000000000000001000000000000000000000000000000a0d8f79bffff00004c31059cffff000003000000000000000000000000000000901badf1aaaa00003006f89bffff00002fe472f7ffff0000d01aadf1aaaa000010f7f79bffff0000e0f5dbbfaaaa000000c0d79bffff000080beadf1aaaa000040beadf1aaaa0000a00d25c0aaaa0000ffffffffffffffff0004000000000000c01aadf1aaaa0000901badf1aaaa000010f7f79bffffffff03000000aaaa0000d01aadf1aaaa000068bbadf1aaaa000068bbadf1aaaa000268bbadf1aaaa0000c01aadf1aaaa0000b8bbadf1aaaa000000ca9a3baaaa0002ffffffffaaaa0000acefdbbfaaaa0000d01aadf1aaaa0000bc12d8bfaaaa0000b8bbadf1aaaa000070bbadf100ca9a3bc01aadf1aaaa0000c01aadf1aaaa0000d01aadf1aaaa0000b8bbadf1aaaa000000ca9a3bffff00006411d6bfaaaa000078bbadf1aaaa00000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000068bbadf1aaaa000078bbadf1aaaa0000b8bbadf101000000d01aadf1aaaa0000#97
 <  34> send packet: $qMemoryRegionInfo:aaaabfdbf5e0#56
 < 114> read packet: $start:aaaabf610000;size:bd2000;permissions:rx;name:2f6170702f7372632f7461726765742f64656275672f72756272696b61;#10
 <  34> send packet: $qMemoryRegionInfo:ffff9bf7f720#e3
 <  50> read packet: $start:ffff9bd81000;size:200000;permissions:rw;#9f
 <  21> send packet: $xffff9bf7f600,200#02
 < 517> read packet: $2ee472f7ffff0000000000000100000020aff89bffff00000000000000000000000000000000000000000000000000006300000000000000000000000000000090b1adf1aaaa0000150000000000000060f5f79bffff000060f5f79bffff00000040000000000000e00200000000000050f7f79bffff000018000000000000000000000000000000000000000000000010f7f79bffff0000acf5d7bfaaaa000040baadf1aaaa000040beadf1aaaa00004406f2bfaaaa00004c03f89bffff0000000000000000000000000000000000000104104001041040010410400104104048b61b9cffff0000000004000000000078e472f7ffff00002ee472f7ffff000080e472f7ffff00004c03f89bffff00000000000000000000dc2f059cffff000030fff79bffff000080e472f7ffff00002ee472f7ffff00000000000000000000000000000000000030fff79bffff00004c03f89bffff000080e472f7ffff00002ee472f7ffff000078e472f7ffff00002fe472f7ffff000030f8f79bffff0000000000000000000000401e9cffff00003013239cffff000030fff79bffff000010f7f79bffff0000619c4ff1e0214345000000000000000021dea3f6e021434500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#96
 <  34> send packet: $qMemoryRegionInfo:ffff9c052fdc#0c
 < 126> read packet: $start:ffff9bf81000;size:15c000;permissions:rx;name:2f6c69622f616172636836342d6c696e75782d676e752f6c6962632d322e33312e736f;#f5
 <  34> send packet: $qMemoryRegionInfo:ffff9c05316c#aa
 < 126> read packet: $start:ffff9bf81000;size:15c000;permissions:rx;name:2f6c69622f616172636836342d6c696e75782d676e752f6c6962632d322e33312e736f;#f5
 <  20> send packet: $p1d;thread:0014;#f2
 <  20> read packet: $7072d79bffff0000#5e
 <  21> send packet: $xffff9bd77200,200#cd
 < 516> read packet: $c010008cffff00000000000000000000bce8d6bfc089b0190000000000000000ffcbbf19ffff00004873d79bffff00007072d79bffff00004c31059cffff00000c000000000000000000000000000000d0d7008cffff000030a6d79bffff00008faa72f7ffff0000387ad79bffff00001097d79bffff0000e0f5dbbfaaaa00000060b79bffff00009008aef1aaaa000040ceadf1aaaa000008f51fc0aaaa0000af010000000000000004000000000000287ad79bffff0000d0d7008cffff00001097d79baf0100000c000000aaaa0000387ad79bffff000018a3008cffff000018a3008cffff000218a3008cffff0000287ad79bffff00000000000000000000c089b019aaaa0002af010000ffff0000acefdbbfaaaa0000387ad79bffff0000bc12d8bfaaaa0000000000000000000020a3008cc089b019287ad79bffff0000287ad79bffff0000387ad79bffff00000000000000000000c089b019ffff00006411d6bfaaaa000028a3008cffff0000686ed79bffff00000000000000000000686ed79bffff00000000000000000000686ed79bffff00000500000000000000207b008cffff0000060000000000000018a3008cffff000028a3008cffff0000207b008c01000000387ad79bffff0000287ad79bffff000008a3008cffff00000000000000000000708f008cc089b01920a3008cffff0000207b008cffff0000#ad
 <  34> send packet: $qMemoryRegionInfo:aaaabfdbf5e0#56
 < 114> read packet: $start:aaaabf610000;size:bd2000;permissions:rx;name:2f6170702f7372632f7461726765742f64656275672f72756272696b61;#10
 <  34> send packet: $qMemoryRegionInfo:ffff9bd79720#b4
 <  50> read packet: $start:ffff9bb7b000;size:200000;permissions:rw;#cd
 <  21> send packet: $xffff9bd79600,200#d3
 < 517> read packet: $0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010ceadf1aaaa00001600000000000000f093d79bffff0000f093d79bffff00000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001097d79bffff0000b8c38fbfaaaa0000000000000000000040ceadf1aaaa00004406f2bfaaaa00004ca3d79bffff0000000000000000000000000000000000000000000000000000000000000000000048b61b9cffff00000000000000000000d8aa72f7ffff00008eaa72f7ffff0000e0aa72f7ffff00004ca3d79bffff00000000000000000000dc2f059cffff0000309fd79bffff0000e0aa72f7ffff00008eaa72f7ffff000000000000000000000000000000000000309fd79bffff00004ca3d79bffff0000e0aa72f7ffff00008eaa72f7ffff0000d8aa72f7ffff00008faa72f7ffff00003098d79bffff0000000000000000000000401e9cffff00003013239cffff0000309fd79bffff00001097d79bffff0000619c4ff1e0214345000000000000000021be83f6e021434500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#33
 <  34> send packet: $qMemoryRegionInfo:ffff9c052fdc#0c
 < 126> read packet: $start:ffff9bf81000;size:15c000;permissions:rx;name:2f6c69622f616172636836342d6c696e75782d676e752f6c6962632d322e33312e736f;#f5
 <  34> send packet: $qMemoryRegionInfo:ffff9c05316c#aa
 < 126> read packet: $start:ffff9bf81000;size:15c000;permissions:rx;name:2f6c69622f616172636836342d6c696e75782d676e752f6c6962632d322e33312e736f;#f5
 <  20> send packet: $p1d;thread:0015;#f3
 <  20> read packet: $7025b79bffff0000#5a
 <  21> send packet: $xffff9bb72400,200#c8
 < 516> read packet: $e822b79bffff0000080000000000000000000000000000000000000000000000f8ffffffffffff7fc00b0090ffff0000c00b0090ffff0000c00b0090ffff0000c00b0090ffff0000c00b0090ffff0000c00b0090ffff0000c00b0090ffff0000c00b0090ffff000000100000000000001037b79bffff0000a4eddbbfaaaa0000702db79bffff000030f1adf1aaaa00000100000000000000000000000000000030f1adf1aaaa0000000000000000000000000000000000006821b79bffff0000c00b0090ffff00000010000000000000080000000000000000100000000000000826b79bffff000002000000040000000200000000000000000000000000000020000000000000030c0000000000000001000000000000000100000000000000010000000000000000000000000000007025b79bffff00004c31059cffff00000a000000000000000000000000000000c00b0090ffff00003046b79bffff00002fbc72f7ffff00000028b79bffff00001037b79bffff0000e0f5dbbfaaaa00000000979bffff000010f8adf1aaaa000090fcadf1aaaa000028f51fc0aaaa0000ffffffffffffffff0001000000000000802db79bffff0000c00b0090ffff000000ca9a3bffffffff0a000000ffff00000028b79bffff0000000000000000000000ca9a3b000000001826b79bffff0000802db79bffff00000000000000000000#c1
 <  34> send packet: $qMemoryRegionInfo:aaaabfdbf5e0#56
 < 114> read packet: $start:aaaabf610000;size:bd2000;permissions:rx;name:2f6170702f7372632f7461726765742f64656275672f72756272696b61;#10
 <  34> send packet: $qMemoryRegionInfo:ffff9bb73720#ac
 <  50> read packet: $start:ffff9b975000;size:200000;permissions:rw;#77
 <  21> send packet: $xffff9bb73600,200#cb
 < 517> read packet: $000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007008aef1aaaa000016000000000000002033b79bffff00002033b79bffff00000040000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001037b79bffff000098c38fbfaaaa0000000000000000000090fcadf1aaaa00004406f2bfaaaa00004c43b79bffff0000000000000000000000000000000000000000000000000000000000000000000048b61b9cffff0000000000000000000078bc72f7ffff00002ebc72f7ffff000080bc72f7ffff00004c43b79bffff00000000000000000000dc2f059cffff0000303fb79bffff000080bc72f7ffff00002ebc72f7ffff000000000000000000000000000000000000303fb79bffff00004c43b79bffff000080bc72f7ffff00002ebc72f7ffff000078bc72f7ffff00002fbc72f7ffff00003038b79bffff0000000000000000000000401e9cffff00003013239cffff0000303fb79bffff00001037b79bffff0000619c4ff1e02143450000000000000000211ee3f6e021434500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000#0e
 <  34> send packet: $qMemoryRegionInfo:ffff9c052fdc#0c
 < 126> read packet: $start:ffff9bf81000;size:15c000;permissions:rx;name:2f6c69622f616172636836342d6c696e75782d676e752f6c6962632d322e33312e736f;#f5
 <  16> send packet: $jThreadsInfo#c1
 < 709> read packet: $[{"name":"rubrika","reason":"signal","registers":{"29":"900073f7ffff0000","30":"8483dcbfaaaa0000","31":"a0e872f7ffff0000","32":"a0f0049cffff0000"}],"signal":19,"tid":17}],{"name":"tokio-runtime-w","reason":"signal","registers":{"29":"a0d8f79bffff0000","30":"4c31059cffff0000","31":"a0d8f79bffff0000","32":"6c31059cffff0000"}],"signal":19,"tid":19}],{"name":"actix-server wo","reason":"signal","registers":{"29":"7072d79bffff0000","30":"4c31059cffff0000","31":"7072d79bffff0000","32":"6c31059cffff0000"}],"signal":19,"tid":20}],{"name":"actix-server ac","reason":"signal","registers":{"29":"7025b79bffff0000","30":"4c31059cffff0000","31":"7025b79bffff0000","32":"6c31059cffff0000"}],"signal":19,"tid":21}]]#b3
 <  24> send packet: $jThreadExtendedInfo:#b9
 <   4> read packet: $#00
 <  21> send packet: $xffff9c04f000,200#c4
 < 530> read packet: $000440b9c7d9ff9781d2069160421f9102008012220400b91f8000b9e9ffff17e00314aa2796fe97e2ffff17e00315aa211080d2220080d2030080d2480c80d2010000d4f35341a9f51340f9fd7bc3a8c0035fd6f30300aaaefdff97e00313aa0c4cfd97010500b021d00691e203002a200c40b942000034220c00b9c0035fd6e803002ae00301aae10302aae20303aae30304aae40305aae50306aae60307aa010000d41ffc3fb142000054c0035fd6984bfd17974bfd171f2003d51f2003d5fd7bb4a902050090fd030091426c47f9f35301a9f403012af51300f9f503002a400040f9e05f00f9000080d27557ff97f303002a1f040031200100546000003400008052e757ff97ee5bff971f0400318008005435060034b401003400050090006c47f9e15f40f9020040f9210002eb020080d2a1070054e003132af35341a9f51340f9fd7bcca8c0035fd6c00200d002008052006039914100805251ebff97f403002a1f04003140050054e103002ae2e30091000080527ad4ff97f303002a80040035e04b40b9000c14121f084071e1020054e02f40f91f0c04f18102005401008052e003142a9ed9ff9721008052e003142a9bd9ff97e003142a4100805298d9ff979f0a0071adfaff54e003142a54d9ff97d2ffff17c00200f000000291e8d9ff97d4f9ff35d9ffff17e003142ab0eaff9700050090000847f941d03bd5#cf
 <  21> send packet: $xffff9c053000,200#92
 < 522> read packet: $e80480d2010000d41ffc3fb142000054c0035fd6bf3bfd171f2003d51f2003d5007c4093a81a80d2010000d41f0440b148000054c0035fd6e1040090210847f942d03bd5e303004b00008092436821b8c0035fd61f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d5e81280d2010000d41ffc3fb142000054c0035fd69f3bfd171f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d51f2003d5081380d2010000d41ffc3fb142000054c0035fd68f3bfd171f2003d51f2003d5fd7bbca9427c4093637c4093fd030091f55b02a956d03bd5c5021cd1f35301a9137c4093a00040b9a0010035e00313aa050180d2c80280d2010000d41f0440b1a8030054f303002ae003132af35341a9f55b42a9fd7bc4a8c0035fd6f50301aaf40304aae30b03a9f685fe97e10315aae603002ae40314aae00313aa050180d2c80280d2e30b43a9010000d41f0440b1e8010054f303002ae003062a1286fe97e003132af35341a9f55b42a9fd7bc4a8c0035fd6e1040090210847f9e003004b13008012c06a21b8e0ffff17e1040090210847f9e003004b13008012c06a21b8eeffff171f2003d51f2003d51f2003d5437c4093007c4093480980d2020180d2010000d41f0440b148000054c0035fd6e1040090210847f942d03bd5e303004b#55
Process 17 stopped
* thread #1, name = 'rubrika', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff9c04f0a0
->  0xffff9c04f0a0: svc    #0
    0xffff9c04f0a4: cmn    x0, #0xfff
    0xffff9c04f0a8: b.hs   0xffff9c04f0b0
    0xffff9c04f0ac: ret    
  thread #2, name = 'tokio-runtime-w', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff9c05316c
->  0xffff9c05316c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff9c053170: b.hi   0xffff9c0531ac
    0xffff9c053174: mov    w19, w0
    0xffff9c053178: mov    w0, w6
  thread #3, name = 'actix-server wo', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff9c05316c
->  0xffff9c05316c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff9c053170: b.hi   0xffff9c0531ac
    0xffff9c053174: mov    w19, w0
    0xffff9c053178: mov    w0, w6
  thread #4, name = 'actix-server ac', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff9c05316c
->  0xffff9c05316c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff9c053170: b.hi   0xffff9c0531ac
    0xffff9c053174: mov    w19, w0
    0xffff9c053178: mov    w0, w6
(lldb) image list
error: the target has no associated executable images

The get-file seems to work:

(lldb) platform get-file /app/src/target/debug/rubrika /tmp/rubrika
 <  91> send packet: $vFile:open:2f6170702f7372632f7461726765742f64656275672f72756272696b61,00000000,00000180#8e
 <   6> read packet: $F5#7b
 <  73> send packet: $vFile:mode:2f6170702f7372632f7461726765742f64656275672f72756272696b61#20
 <   8> read packet: $F493#e6
 <  23> send packet: $vFile:pread:5,400,0#c7
 < 410> read packet: $463430303b7f454c460201010000000000000000000300b70001000000d8170900000000004000000000000000b88266080000000000000000400038000a0040002a002900060000000400000040000000000000004000000000000000400000000000000030020000000000003002000000000000080000000000000003000000040000007002000000000000700200000000000070020000000000001b000000000000001b00000000000000010000000000000001000000050000000000000000000000000000000000000000000000000000001411bd00000000001411bd000000000000000100000000000100000006000000d814bd0000000000d814be0000000000d814be0000000000282e070000000000e030070000000000000001000000000002000000060000008808c400000000008808c500000000008808c5000000000030020000000000003002000000000000080000000000000004000000040000008c020000000000008c020000000000008c02000000000000440000000000000044000000000000000400000000000000#3a
 <  25> send packet: $vFile:pread:5,400,190#31
 < 409> read packet: $463430303b0000000000000000000000000000000000001411bd00000000001411bd000000000000000100000000000100000006000000d814bd0000000000d814be0000000000d814be0000000000282e070000000000e030070000000000000001000000000002000000060000008808c400000000008808c500000000008808c5000000000030020000000000003002000000000000080000000000000004000000040000008c020000000000008c020000000000008c020000000000004400000000000000440000000000000004000000000000000700000004000000d814bd0000000000d814be0000000000d814be00000000007800000000000000a802000000000000080000000000000050e57464040000009c73a100000000009c73a100000000009c73a1000000000064bb04000000000064bb040000000000040000000000000051e574640600000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000052e5746404000000d814bd0000000000d814be000000#2a
 <  25> send packet: $vFile:pread:5,400,320#2c
 < 410> read packet: $463430303b30020000000000003002000000000000080000000000000004000000040000008c020000000000008c020000000000008c020000000000004400000000000000440000000000000004000000000000000700000004000000d814bd0000000000d814be0000000000d814be00000000007800000000000000a802000000000000080000000000000050e57464040000009c73a100000000009c73a100000000009c73a1000000000064bb04000000000064bb040000000000040000000000000051e574640600000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000052e5746404000000d814bd0000000000d814be0000000000d814be0000000000280b070000000000280b07000000000001000000000000002f6c69622f6c642d6c696e75782d616172636836342e736f2e310000040000001400000003000000474e5500c63fb3f424f35b6a00e035f962aa580fcab48c7a040000001000000001000000474e550000000000030000000700000000000000#c4
 <  25> send packet: $vFile:pread:5,400,4b0#5d
 < 410> read packet: $463430303b0201010000000000000000000300b70001000000d8170900000000004000000000000000b88266080000000000000000400038000a0040002a002900060000000400000040000000000000004000000000000000400000000000000030020000000000003002000000000000080000000000000003000000040000007002000000000000700200000000000070020000000000001b000000000000001b00000000000000010000000000000001000000050000000000000000000000000000000000000000000000000000001411bd00000000001411bd000000000000000100000000000100000006000000d814bd0000000000d814be0000000000d814be0000000000282e070000000000e030070000000000000001000000000002000000060000008808c400000000008808c500000000008808c5000000000030020000000000003002000000000000080000000000000004000000040000008c020000000000008c020000000000008c0200000000000044000000000000004400000000000000040000000000000007000000#eb
 <  25> send packet: $vFile:pread:5,400,640#31
 < 410> read packet: $463430303b72636836342e736f2e310000040000001400000003000000474e5500c63fb3f424f35b6a00e035f962aa580fcab48c7a040000001000000001000000474e55000000000003000000070000000000000001000000010000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003000b00e8e408000000000000000000000000000000000003001b000020c5000000000000000000000000000b0400001200000000000000000000000000000000000000110500001200000000000000000000000000000000000000c80200001200000000000000000000000000000000000000590400001200000000000000000000000000000000000000190200001200000000000000000000000000000000000000010000002000000000000000000000000000000000000000900100001200000000000000000000000000000000000000c20000001200000000000000000000000000000000000000cf0300001200000000000000000000000000000000000000#48
 <  25> send packet: $vFile:pread:5,400,7d0#62
 < 410> read packet: $463430303b0000000000000000000300b70001000000d8170900000000004000000000000000b88266080000000000000000400038000a0040002a002900060000000400000040000000000000004000000000000000400000000000000030020000000000003002000000000000080000000000000003000000040000007002000000000000700200000000000070020000000000001b000000000000001b00000000000000010000000000000001000000050000000000000000000000000000000000000000000000000000001411bd00000000001411bd000000000000000100000000000100000006000000d814bd0000000000d814be0000000000d814be0000000000282e070000000000e030070000000000000001000000000002000000060000008808c400000000008808c500000000008808c5000000000030020000000000003002000000000000080000000000000004000000040000008c020000000000008c020000000000008c0200000000000044000000000000004400000000000000040000000000000007000000040000#eb
 <  25> send packet: $vFile:pread:5,400,960#36
 < 409> read packet: $463430303b0000000000000000900100001200000000000000000000000000000000000000c20000001200000000000000000000000000000000000000cf03000012000000000000000000000000000000000000001d0000001200000000000000000000000000000000000000bb0300001200000000000000000000000000000000000000d40000001200000000000000000000000000000000000000d30200001200000000000000000000000000000000000000300500001200000000000000000000000000000000000000eb0000001200000000000000000000000000000000000000c703000012000000000000000000000000000000000000005f0200001200000000000000000000000000000000000000ad0300001200000000000000000000000000000000000000990400001200000000000000000000000000000000000000e10300001200000000000000000000000000000000000000f30100001200000000000000000000000000000000000000b40200001200000000000000000000000000000000000000aa02000012000000#c2
 <  25> send packet: $vFile:pread:5,400,af0#8e
 <   7> read packet: $F0;#b1
 <  17> send packet: $vFile:close:5#b5
 <   6> read packet: $F0#76
successfully get-file from /app/src/target/debug/rubrika (remote) to /tmp/rubrika (host)

Interestingly the permissions make it not usable by me by default:

❯ ls -ald /tmp/rubrika 
Permissions Size User         Date Modified Name
.-w------x  2.8k johnanderson 23 Oct 12:42  /tmp/rubrika

This log seems interesting:

(lldb) platform process attach --pid 17
(lldb)  PlatformRemoteGDBServer::GetModuleSpec - got module info for (/app/src/target/debug/rubrika:aarch64-unknown-linux-gnu) : file = '/app/src/target/debug/rubrika', arch = aarch64-unknown-linux, uuid = C63FB3F4-24F3-5B6A-00E0-35F962AA580F-CAB48C7A, object size = 140938552
 Platform::GetCachedSharedModule - module C63FB3F4-24F3-5B6A-00E0-35F962AA580F-CAB48C7A not found in local cache: Failed to download module: read 0 bytes

I wonder if it makes it to your host then.

Edit: sounds like it doesn’t.

FWIW looking at my Linux host, the file is copied into the module cache temp dir, then symlinked into a path that matches the remote’s.

rename("/home/davspi01/.lldb/module_cache/remote-linux/.cache/F8A301A2/.temp", "/home/davspi01/.lldb/module_cache/remote-linux/.cache/F8A301A2/tbi_lisp") = 0
<...>
link("/home/davspi01/.lldb/module_cache/remote-linux/.cache/F8A301A2/tbi_lisp", "/home/davspi01/.lldb/module_cache/remote-linux/e113826-lin/home/davspi01/tbi_lisp") = 0

I thought maybe some Mac OS specific symbol search might be making lldb choose the local file, and though I don’t know much about that, it seems like it would be magic if it were doing that.

Unless you have the Mac binary in the same dir as lldb maybe? Worth cleaning the local build just to rule that out.

Is that string maybe the VDSO? In my earlier image list I had 2 entries one for the program and one for the VDSO.

I’m not sure if that should even have a file, I guess we read it from the process’ memory into one?

Edit: I don’t see any sign of it in my module cache.

ok, so running it from scratch. I deleted the target folder locally so it was empty:

❯ lldb
(lldb) platform select remote-linux
  Platform: remote-linux
 Connected: no
(lldb) settings set -- target.source-map /app/src /Users/johnanderson/code/drape/rubrika
(lldb) log enable lldb platform -f /tmp/lldb-platform-logs.txt
(lldb) log enable gdb-remote packets -f /tmp/lldb-packets-logs.txt
(lldb) platform connect connect://localhost:31166
  Platform: remote-linux
    Triple: aarch64-unknown-linux-gnu
OS Version: 6.4.16 (6.4.16-orbstack-00105-g14094bfeec09)
  Hostname: rubrika-6db9d686b6-lhjrw
 Connected: yes
WorkingDir: /app/src
    Kernel: #1 SMP Mon Sep 18 21:45:38 UTC 2023
(lldb) platform process list
5 matching processes were found on "remote-linux"

PID    PARENT USER       TRIPLE                         NAME
====== ====== ========== ============================== ============================
1      0      root       aarch64-unknown-linux-gnu      cargo-watch
16     1      root       aarch64-unknown-linux-gnu      dash
17     16     root       aarch64-unknown-linux-gnu      rubrika
22     0      root       aarch64-unknown-linux-gnu      bash
821    22     root       aarch64-unknown-linux-gnu      lldb-server
(lldb) platform process attach --pid 17
Process 17 stopped
* thread #1, name = 'rubrika', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff8a1480a0
->  0xffff8a1480a0: svc    #0
    0xffff8a1480a4: cmn    x0, #0xfff
    0xffff8a1480a8: b.hs   0xffff8a1480b0
    0xffff8a1480ac: ret    
  thread #2, name = 'tokio-runtime-w', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff8a14c16c
->  0xffff8a14c16c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff8a14c170: b.hi   0xffff8a14c1ac
    0xffff8a14c174: mov    w19, w0
    0xffff8a14c178: mov    w0, w6
  thread #3, name = 'actix-server wo', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff8a14c16c
->  0xffff8a14c16c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff8a14c170: b.hi   0xffff8a14c1ac
    0xffff8a14c174: mov    w19, w0
    0xffff8a14c178: mov    w0, w6
  thread #4, name = 'actix-server ac', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff8a14c16c
->  0xffff8a14c16c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff8a14c170: b.hi   0xffff8a14c1ac
    0xffff8a14c174: mov    w19, w0
    0xffff8a14c178: mov    w0, w6
(lldb) image list
error: the target has no associated executable images
(lldb)

The platform logs return:

 PlatformRemoteGDBServer::GetRemoteWorkingDirectory() -> '/app/src'
 PlatformRemoteGDBServer::GetModuleSpec - got module info for (/app/src/target/debug/rubrika:aarch64-unknown-linux-gnu) : file = '/app/src/target/debug/rubrika', arch = aarch64-unknown-linux, uuid = C63FB3F4-24F3-5B6A-00E0-35F962AA580F-CAB48C7A, object size = 140938552
 Platform::GetCachedSharedModule - module C63FB3F4-24F3-5B6A-00E0-35F962AA580F-CAB48C7A not found in local cache: Failed to download module: read 0 bytes

The packet logs are here:

Thanks, can you give a listing of the content of the module cache as well?

It has the folders but no files in them:

✗  tree ~/.lldb/module_cache/remote-linux/.cache 
/Users/johnanderson/.lldb/module_cache/remote-linux/.cache
├── 5621D99E-8448-D9F5-A80A-D29F6C21AB9B-8BF99475
├── C63FB3F4-24F3-5B6A-00E0-35F962AA580F-CAB48C7A
└── E2D2A9C4-F113-8677-3009-404B4891C56F-13B0399C

4 directories, 0 files

I tried running it as root as well. Platform logs were the same:

 force = true, arch=(<null>, <null>)
 create = true
 PlatformRemoteGDBServer::GetRemoteWorkingDirectory() -> '/app/src'
 PlatformRemoteGDBServer::GetModuleSpec - got module info for (/app/src/target/debug/rubrika:aarch64-unknown-linux-gnu) : file = '/app/src/target/debug/rubrika', arch = aarch64-unknown-linux, uuid = C63FB3F4-24F3-5B6A-00E0-35F962AA580F-CAB48C7A, object size = 140938552
 Platform::GetCachedSharedModule - module C63FB3F4-24F3-5B6A-00E0-35F962AA580F-CAB48C7A not found in local cache: Failed to download module: read 0 bytes

Here is the packet logs:

I also wiped the module cache before doing it and it ended up making nothing new in there:

❯ sudo tree ~/.lldb/module_cache/            
/Users/johnanderson/.lldb/module_cache/
└── remote-linux

2 directories, 0 files

This is a workaround, but might get you going:

Launch lldb. Connect to the platform. Use platform get-file to copy the file from the container to the host. Then load it in lldb with the “file” command. After that, do a platform attach.

I’d be interested in seeing if lldb uses the currently selected target as the target to attach to.

Another thing to try is “platform launch”. That should take the current target (from the container, pulled with platform get-file), push it to the target, and run it.

So one interesting thing that happened was it didn’t tell me there was a problem getting it even though there was:

(lldb) platform get-file /app/src/target/debug/rubrika ./target/debug/rubrika
successfully get-file from /app/src/target/debug/rubrika (remote) to ./target/debug/rubrika (host)

The whole log for that interaction is here:

❯ lldb                            
(lldb) platform select remote-linux
  Platform: remote-linux
 Connected: no
(lldb) settings set -- target.source-map /app/src /Users/johnanderson/code/drape/rubrika
(lldb) log enable lldb platform -f /tmp/lldb-platform.txt
(lldb) log enable gdb-remote packets -f /tmp/lldb-packets.txt
(lldb) platform connect connect://localhost:31166
  Platform: remote-linux
    Triple: aarch64-unknown-linux-gnu
OS Version: 6.4.16 (6.4.16-orbstack-00105-g14094bfeec09)
  Hostname: rubrika-6db9d686b6-lhjrw
 Connected: yes
WorkingDir: /app/src
    Kernel: #1 SMP Mon Sep 18 21:45:38 UTC 2023
(lldb) platform get-file /app/src/target/debug/rubrika ./target/debug/rubrika
successfully get-file from /app/src/target/debug/rubrika (remote) to ./target/debug/rubrika (host)
(lldb) file ./target/debug/rubrika
error: '/app/src/target/debug/rubrika' doesn't contain any 'remote-linux' platform architectures: aarch64, arm
(lldb) file target/debug/rubrika
error: '/app/src/target/debug/rubrika' doesn't contain any 'remote-linux' platform architectures: aarch64, arm
(lldb) file /app/src/target/debug/rubrika
error: '/app/src/target/debug/rubrika' doesn't contain any 'remote-linux' platform architectures: aarch64, arm

The folder on the host target/debug didn’t exist yet and it didn’t create it. Once I created the folder it downloaded the file but it had weird permissions:

❯ ls target/debug/rubrika 
Permissions Size User         Date Modified Name
.-w------x  2.8k johnanderson 23 Oct 15:07  target/debug/rubrika

which caused issues:

(lldb) file ./target/debug/rubrika
error: '/Users/johnanderson/code/drape/rubrika/target/debug/rubrika' is not readable

but after making it readable:

(lldb) file ./target/debug/rubrika
Current executable set to '/Users/johnanderson/code/drape/rubrika/target/debug/rubrika' (aarch64).

(lldb) target list
Current targets:
* target #0: /Users/johnanderson/code/drape/rubrika/target/debug/rubrika ( arch=aarch64-*-*, platform=remote-linux )

but after I attach it uses a different target:

(lldb) target list
Current targets:
* target #0: /Users/johnanderson/code/drape/rubrika/target/debug/rubrika ( arch=aarch64-*-*, platform=remote-linux )
(lldb) platform process list
5 matching processes were found on "remote-linux"

PID    PARENT USER       TRIPLE                         NAME
====== ====== ========== ============================== ============================
1      0      root       aarch64-unknown-linux-gnu      cargo-watch
16     1      root       aarch64-unknown-linux-gnu      dash
17     16     root       aarch64-unknown-linux-gnu      rubrika
22     0      root       aarch64-unknown-linux-gnu      bash
829    22     root       aarch64-unknown-linux-gnu      lldb-server
(lldb) platform process attach --pid 17
Process 17 stopped
* thread #1, name = 'rubrika', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff8a1480a0
->  0xffff8a1480a0: svc    #0
    0xffff8a1480a4: cmn    x0, #0xfff
    0xffff8a1480a8: b.hs   0xffff8a1480b0
    0xffff8a1480ac: ret    
  thread #2, name = 'tokio-runtime-w', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff8a14c16c
->  0xffff8a14c16c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff8a14c170: b.hi   0xffff8a14c1ac
    0xffff8a14c174: mov    w19, w0
    0xffff8a14c178: mov    w0, w6
  thread #3, name = 'actix-server wo', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff8a14c16c
->  0xffff8a14c16c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff8a14c170: b.hi   0xffff8a14c1ac
    0xffff8a14c174: mov    w19, w0
    0xffff8a14c178: mov    w0, w6
  thread #4, name = 'actix-server ac', stop reason = signal SIGSTOP
    frame #0: 0x0000ffff8a14c16c
->  0xffff8a14c16c: cmn    x0, #0x1, lsl #12         ; =0x1000 
    0xffff8a14c170: b.hi   0xffff8a14c1ac
    0xffff8a14c174: mov    w19, w0
    0xffff8a14c178: mov    w0, w6
(lldb) image list
error: the target has no associated executable images
(lldb) target list
Current targets:
  target #0: /Users/johnanderson/code/drape/rubrika/target/debug/rubrika ( arch=aarch64-*-*, platform=remote-linux )
* target #1: <none> ( arch=aarch64-unknown-linux-gnu, platform=remote-linux, pid=17, state=stopped )

ok, so this was a big waste of time but I understand lldb a lot better now :rofl:

So, I tried to make a smaller reproduction of this and couldn’t reproduce it. Turns out the docker image I was basing off of (debian-bullseye) was shipping lldb-server v11 which seems to contain the bug I was hitting.

Updating to debian-bookworm gets to lldb-server v15 which has the bug fixed.

Great!

To be honest, I also forgot to say the usual “try the latest lldb” up front. So we’re all learning lessons today :slight_smile:

(and if you really really need to test on bullseye, Ted’s workaround is worth trying)