Hi All, Below is a sample example, where target.source-map seems to have a limitation. The limitation seems to be because 1. lldb does not have an equivalent command like directory in gdb 2. target.source-map does not accept multiple mapping entries. I checked this only with freebsd.
(lldb) settings show target.source-map target.source-map (path-map) = [0] "/home/karnajitw/lldb_test_execs/test_source_line1" -> "/u/test/test_source_line1" 3. Haven't checked in the code yet, but if we see the mappings of scenario 1, they all point to a single real path /home/karnajitw/lldb_test_execs/test_source_line1. But looks like the mapping logic only considers strings into account. But, at the same time, I am not claiming that they should be interpreted as path from a different machine during the mapping. I want to check on this issue in-depth. But before that, want to confirm if this is real issue or there are other ways to deal these scenarios which I am not aware of? I am referring below link for the lldb commands. https://lldb.llvm.org/lldb-gdb.html 1. First scenario: Different souce file path representation [/home/karnajitw/lldb_test_execs/test_source_line1] $ clang -O0 -g /home/karnajitw/lldb_test_execs///test_source_line1/main.c /home/karnajitw/lldb_test_execs/../lldb_test_execs/test_source_line1/a/ainc.c /home/karnajitw/lldb_test_execs/test_source_line1/a/b/binc.c Machine 1: /home/karnajitw/lldb_test_execs/test_source_line1 -> Machine 2: /u/test/test_source_line1 test_source_line1 |-- a | |-- ainc.c | |-- ainc.h | `-- b | |-- binc.c | `-- binc.h |-- a.out `-- main.c % ./lldb test_source_line1/a.out (lldb) target create "test_source_line1/a.out" Current executable set to 'test_source_line1/a.out' (x86_64). (lldb) l main File: /home/karnajitw/lldb_test_execs///test_source_line1/main.c (lldb) l afn File: /home/karnajitw/lldb_test_execs/../lldb_test_execs/test_sour ce_line1/a/ainc.c (lldb) l bfn File: /home/karnajitw/lldb_test_execs/test_source_line1/a/b/binc.c (lldb) settings set target.source-map /home/karnajitw/lldb_test_execs///test_source_line1 /u/test/test_source_line1 (lldb) l main File: /home/karnajitw/lldb_test_execs///test_source_line1/main.c 1 #include "a/ainc.h" 2 3 int main() 4 { 5 afn(); 6 7 bfn(); 8 9 return 0; 10 } (lldb) l afn File: /home/karnajitw/lldb_test_execs/../lldb_test_execs/test_sour ce_line1/a/ainc.c (lldb) l bfn File: /home/karnajitw/lldb_test_execs/test_source_line1/a/b/binc.c (lldb) settings set target.source-map /home/karnajitw/lldb_test_exec s/../lldb_test_execs/test_source_line1 /u/test/test_source_line1 (lldb) l main File: /home/karnajitw/lldb_test_execs///test_source_line1/main.c (lldb) l afn File: /home/karnajitw/lldb_test_execs/../lldb_test_execs/test_sour ce_line1/a/ainc.c 1 #include <stdio.h> 2 #include "ainc.h" 3 4 void afn() 5 { 6 printf("Hello this is afn...\n"); 7 } (lldb) l bfn File: /home/karnajitw/lldb_test_execs/test_source_line1/a/b/binc.c (lldb) settings set target.source-map /home/karnajitw/lldb_test_execs/test_source_line1 /u/test/test_source_line1 (lldb) l main File: /home/karnajitw/lldb_test_execs///test_source_line1/main.c (lldb) l afn File: /home/karnajitw/lldb_test_execs/../lldb_test_execs/test_sour ce_line1/a/ainc.c (lldb) l bfn File: /home/karnajitw/lldb_test_execs/test_source_line1/a/b/binc.c 1 #include <stdio.h> 2 #include "binc.h" 3 4 void bfn() 5 { 6 printf("Hello this is bfn...\n"); 7 } 2. Scenario 2: Deep directory structure <top>/obj/a/b/c/d/e/app/sub/../../../../../../../../src/a/b/ c/d/e/app/sub/file <top>/obj/a/b/c/d/e/app/../../../../../../../src/a/b/c/d/e/app/file - If we carry the copy the source file to machine 2, we cannot easily map the source file without creating dummy <top>/obj/a/b/c/d/e/f/g. 3. Scenario 3: External libraries - I haven't exactly tested this yet. But I belive in scenario too we might need to change the source-map. Please look into this and guide me for the same. Regards, Karan
_______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev